simba
驱动牛犊
驱动牛犊
  • 注册日期2002-01-28
  • 最后登录2009-02-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
20楼#
发布于:2005-01-22 00:20
实际上主要的问题还不是运行级别的问题,rayyang2000已经说了系统线程,这个完全可以搞定,hangzhoustayer就算是用上述方法把TDI放进去做了idbee说的iSCSI initiator,也存在报告SRB完成的麻烦,异步IO完成消息丢哪里?正常的适配器有ISR处理,这里如果不动手脚就得靠时钟,性能将很差,如IBM的试验Windows iSCSI initiator,M$自己的自然方法上要好多了,可惜DDK是不公开Port的Source的,因此就要SunMing.Cai提供的那个代码或tooflat说的NT4 Source,然后自己动手写Port,但与其这样写一套,还不如直接写一个KMD或Filter,话说回来具体还要看hangzhoustayer的毕业设计倒底想干什么?这里不应该搞那么复杂。
SunMing.Cai
驱动牛犊
驱动牛犊
  • 注册日期2002-11-25
  • 最后登录2008-01-10
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
21楼#
发布于:2005-01-22 11:59
其实没有说得这么复杂。
不使用 scsiport.sys(hwInitialize) 并不表示不实现 miniport port。scsiport是一个bus 封装好的驱动。
而为什么要提供这样的封装 方法,可能是从nt4遗留下来的。是为了方便跟scsi adapter接口吧(这样开发 scsi 驱动就只需要将srb传给scsi adapter 就可以了)。
但做虚拟的scsi initialitor(像iscsi),没有必要遵守这个。所有的 scsiport 操作,都可以用标准的 wdm dispatch 实现。
像 scsi inquery 其实就是  pnp_query  relation=bus
梦想驱动人生 ------------------------ MSN:saleonnet@hotmail.com ICQ:175745619 OQ:14892627
simba
驱动牛犊
驱动牛犊
  • 注册日期2002-01-28
  • 最后登录2009-02-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望2点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
22楼#
发布于:2005-01-22 17:05
SCSI miniport的设计其实是为了广泛的硬件支持,这也就是DDK公开这部分设计的原因,传给适配器的东西是IRP中的SRB中的16字节CDB,也就是Disk Class Driver里做好的,自己写一个直接操作板卡也可以,呵呵
hangzhoustayer
驱动小牛
驱动小牛
  • 注册日期2002-05-08
  • 最后登录2006-06-19
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
23楼#
发布于:2005-01-24 15:30
多谢各位的关注。我的任务就是写一个initiator端,但是我想如果在initiator端把target端ip地址定死只能用一个就显得不太合理。我想initiator可以建立到多个target的连接,当需要建立新连接时,驱动中先建一个虚拟设备,通过应用程序和驱动通信IoControl的方法把需要的结构以及TDI都建好,当不需要时就销毁这个设备。这样的话原来scsi miniport的结构就存在我上面问的这个问题了。simba说直接写过滤驱动,但其实这样通过在SCSI miniport层截获SCSI srb,再通过TDI传送出去的方法就是过滤的办法把,我不明白你指的中间层过滤驱动是什么概念。SunMing.Cai的意思是自己实现SCSI port和miniport吗?那么用标准的 wdm dispatch 实现同样有跟这里类似的问题,scsi port的实现也不是标准wdm的实现啊,看起来很怪的。。。
rayyang2000
管理员
管理员
  • 注册日期2001-03-23
  • 最后登录2012-09-13
  • 粉丝3
  • 关注0
  • 积分1036分
  • 威望925点
  • 贡献值3点
  • 好评度823点
  • 原创分0分
  • 专家分0分
24楼#
发布于:2005-01-24 20:00
scsi port的实现也不是标准wdm的实现啊,看起来很怪的。。。


什么意思?
天天coding-debugging中----超稀饭memory dump file ======================================================== [b]Windows Device Driver Development and Consulting Service[/b] [color=blue][url]http://www.ybwork.com[/url][/color] ========================================================
hangzhoustayer
驱动小牛
驱动小牛
  • 注册日期2002-05-08
  • 最后登录2006-06-19
  • 粉丝1
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
25楼#
发布于:2005-01-25 18:52
我指的是scsi port程序它看起来也不是正常的wdm程序的样子
在它的driverEntry里面只有,而ScsiPortInitialize不知道谁会调用它,而且它的参数里面也有跟写miniport一样需要的HW_INITIALIZATION_DATA,其他函数也不知道是怎么调用的。。
ac97eric
驱动牛犊
驱动牛犊
  • 注册日期2004-11-30
  • 最后登录2006-03-30
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
26楼#
发布于:2005-07-14 20:48
本人也在作windows下的initiator,也是采用的SCSI MiniPort + Tdi的框架,目前两部分都已经分别实现,目前碰到的问题的是:用户调用TDI Login Target,也就是说在计算机启动以后才能登陆目标器。然而我的SCSI MiniPort 是参考的Vdisk源代码,是一个Legend设备,计算机启动之后系统线程就开始工作。所以我需要一个用户和SCSI MiniPort 通信的方法,来通知SCSI MiniPort 已经登陆了Target,可以向Target发送数据了。目前还没有解决这个问题,请各位大虾指教!
dadalan
驱动牛犊
驱动牛犊
  • 注册日期2007-01-11
  • 最后登录2008-11-03
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
27楼#
发布于:2008-06-03 17:10
本人实现了TDI 和scsi miniport驱动,但是挂载时,scsi  miniport 驱动格式化便会出错,请高人指点,本人邮箱     fjnu_jxd_111@tom.com
dadalan
驱动牛犊
驱动牛犊
  • 注册日期2007-01-11
  • 最后登录2008-11-03
  • 粉丝1
  • 关注0
  • 积分1分
  • 威望5点
  • 贡献值0点
  • 好评度3点
  • 原创分0分
  • 专家分0分
28楼#
发布于:2008-06-03 17:16
ac97eric 等已经实现了TDI+scsi miniport的前辈能否联系本人,本人想请教一些问题,因本人通过TDI挂载后的scsi miniport格式化时便出错,这个问题困扰了我很久了。本人邮箱    fjnu_jxd_111@tom.com已经贴上。
上一页 下一页
游客

返回顶部