阅读:6930回复:28
请问在scsi miniport驱动的DriverEntry函数中可不可以。。
请问在scsi miniport驱动的DriverEntry函数中可不可以设置这些
DriverObject->DriverUnload = DriverUnload; DriverObject->DriverExtension->AddDevice = AddDevice; DriverObject->MajorFunction[IRP_MJ_POWER] = DispatchPower; DriverObject->MajorFunction[IRP_MJ_PNP] = DispatchPnp; 多谢 |
|
沙发#
发布于:2004-12-05 12:19
那你自己写就可以了,不使用scsi的库函数
|
|
|
板凳#
发布于:2004-12-05 13:21
自己写是什么意思,自己写scsi 的miniport不使用
hwInitData.HwInitialize hwInitData.HwStartIo hwInitData.HwFindAdapter 这套吗,这样要实现scsi是不是很难,有相应的例子可以参考吗? 谢谢 |
|
地板#
发布于:2004-12-06 12:00
自己写是什么意思,自己写scsi 的miniport不使用 对就是那样 会者不难,难者不会 |
|
|
地下室#
发布于:2004-12-06 22:58
答案是肯定的
Scsiminport driver 与scsiport driver 的关系 类似于 Disk/CDROM driver 与 Classpnp之间的关系。 |
|
|
5楼#
发布于:2004-12-07 11:23
要这样写难度很大啊,大侠们有没有发现有相关的例程可以参考的,谢谢了
|
|
6楼#
发布于:2004-12-09 09:39
hangzhoustayer的问题我也有想过。
我在这里贴上一个 freeos 的scsiport.c 源码。 它来自http://cvs.cosoft.org.cn/cgi-bin/viewcvs.cgi/fileshare/FreeWin/drivers/storage/scsiport/scsiport.c?rev=HEAD 是一个完整的仿 winnt 的 kernel project. 其driver的架构和原理都跟wdm相仿。 scsi miniport是一个bus类驱动,但事实上,在使用hwInitData.HwInitialize之类的来封装时,scsiport.sys封装了大量的操作。 你用 driver studio 3.0 驱动向导, 建一个 scsi miniport(C框架),再比较一下就知道了. |
|
|
7楼#
发布于:2004-12-09 10:35
多谢SunMing.Cai大侠,我先看看你提到的东东
|
|
8楼#
发布于:2005-01-10 21:53
SunMing.Cai我参考你的意见看了driverstudio生成的代码和你提供的scsiport程序(2000源代码析出的scsiport是一样的),发现driverstudio里面不知道运行在哪一层?port层还是miniport层
它里面多出来的东西无非是IRP_MJ_INTERNAL_DEVICE_CONTROL,在此I处理函数中就是scsi的srb但是我在自己的程序里面仿照它加了一个IRP_MJ_INTERNAL_DEVICE_CONTROL的处理,却发现不起作用,驱动不会进入到IRP_MJ_INTERNAL_DEVICE_CONTROL的处理函数中 scsiport程序也有一些没有想通的问题:如果我在ScsiPortDispatchScsi程序中直接处理srb,然后调用tdi跟远程通信不知道可不可行,这样就没有了miniport层,据我所知scsi miniport层相当于bus,如果没有它系统还会辨认出通过这种办法做成的虚拟磁盘吗? 请SunMing.Cai大侠指教//bow |
|
9楼#
发布于:2005-01-10 22:26
你的问题,我曾经想过,我是在实现一个iSCSI在windows端的initiator时提出的。经过我一段时间的思索,觉得不实现miniport是不可能实现iSCSI的。因为只有当os发现自己有一个scsi adapter的时候,才会去inquiry这个bus上有没有挂接disk,所以必须在miniport中建立TDI连接。微软自己就是这样做的。
|
|
|
10楼#
发布于:2005-01-11 18:23
那就是说
DriverObject->DriverUnload = DriverUnload; DriverObject->DriverExtension->AddDevice = AddDevice; DriverObject->MajorFunction[IRP_MJ_POWER] = DispatchPower; DriverObject->MajorFunction[IRP_MJ_PNP] = DispatchPnp; 这些都加不了了? 兄弟你这个initiator实现得怎么样,可不可以把代码发给我学习学习,我毕设也要做这个东西,问题多多,我的邮箱是,hangzhoustayer@163.com,谢谢谢谢 |
|
11楼#
发布于:2005-01-11 23:07
那就是说 这个当然可以加 |
|
|
12楼#
发布于:2005-01-12 13:13
你有没有试过?我加过之后编译没问题,但是怎么运行不了的
|
|
13楼#
发布于:2005-01-19 20:23
scsi miniport driver里面没地方加这个。
想做scsi port driver,要考虑很多东西,想做得好,也不是那么容易的 |
|
|
14楼#
发布于:2005-01-19 21:10
没有人研究nt4-source包里面的scsiport.sys的源码吗,
很想把srb修改成可以在passive_level处理,苦于能力和时间不够 |
|
15楼#
发布于:2005-01-19 21:13
没有人研究nt4-source包里面的scsiport.sys的源码吗, workitem |
|
|
16楼#
发布于:2005-01-19 21:13
另外我在替换了DriverUnload的时候,手工卸载设备没有问题,
但是重启以后,操作系统会自己发现硬件,然后把我的驱动unload, 发生蓝屏,并且蓝屏发生在我的MiniportDriverUnload和PortDriverUnload都返回以后。 恳请各位大虾指点。 |
|
17楼#
发布于:2005-01-19 21:18
[quote]没有人研究nt4-source包里面的scsiport.sys的源码吗, workitem [/quote] thx,有时间试一试, |
|
18楼#
发布于:2005-01-20 20:22
[quote]没有人研究nt4-source包里面的scsiport.sys的源码吗, workitem [/quote] workitem只能工作在系统线程上下文中,不符合要求啊 |
|
19楼#
发布于:2005-01-21 13:15
[quote][quote]没有人研究nt4-source包里面的scsiport.sys的源码吗, workitem [/quote] workitem只能工作在系统线程上下文中,不符合要求啊 [/quote] but system thread works at PASSIVE_LEVEL. don't you want this? |
|
|
上一页
下一页