hunbalo
驱动牛犊
驱动牛犊
  • 注册日期2004-04-21
  • 最后登录2020-10-20
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望124点
  • 贡献值0点
  • 好评度85点
  • 原创分1分
  • 专家分0分
  • 社区居民
阅读:4059回复:14

请教我给usb storage写的uppfilter怎么过滤不到u盘的读写?

楼主#
更多 发布于:2007-04-27 15:39
  我就将toaster下面的filter捎加修改,然后在在\windows\inf\目录下的usbstor.inf中忝加安装Upperfilter的内容,也安装成功了,我用windbg跟踪调试,adddevice很正常,能捕获到pnp及power的irp,但是我读写u盘,却看不到任何的irp.
而我将其改成Lowerfilter时却能抓到很多irp,这是为什么呢?
按照我的理解,usb存储设备的驱动从上到下应该是这样组织的,disk.sys, usbstor.sys.
disk.sys向下发的是srb,usbstor.sys将这些转换为usb总线命令,那么usbstor的Upperfilter应该可以捕获到包装在srb中的cdb.
描述不是很清楚,我付上代码,在vmware5.5, winxp sp2下测试过的.
附件名称/大小 下载次数 最后更新
usbstoruf.rar (65KB)  197 2007-04-27 15:39

最新喜欢:

LeopardLeopar...
hunbalo
驱动牛犊
驱动牛犊
  • 注册日期2004-04-21
  • 最后登录2020-10-20
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望124点
  • 贡献值0点
  • 好评度85点
  • 原创分1分
  • 专家分0分
  • 社区居民
沙发#
发布于:2007-04-29 23:18
{4D36E967-E325-11CE-BFC1-08002BE10318}是diskdrive类的guid,这样会不会成为disk.sys的upfilter?而不是usbstor.sys的upperfilter?
hunbalo
驱动牛犊
驱动牛犊
  • 注册日期2004-04-21
  • 最后登录2020-10-20
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望124点
  • 贡献值0点
  • 好评度85点
  • 原创分1分
  • 专家分0分
  • 社区居民
板凳#
发布于:2007-05-01 14:33
引用第3楼rayyang20002007-04-30 13:02发表的“”:
sure

那我怎么控制我的过滤驱动仅仅加载为usb mass storage 设备的过滤驱动?
我看了bushound的过滤驱动是加载为usb类的lower filter,
atapi的upper filter,他可以抓到cbd。
我反汇编usbstor.sys看了,其中确实实现了IRP_MJ_SCSI,但我还搞不明白我的 upper filter驱动为什么就过滤不到IRP_MJ_SCSI.
hunbalo
驱动牛犊
驱动牛犊
  • 注册日期2004-04-21
  • 最后登录2020-10-20
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望124点
  • 贡献值0点
  • 好评度85点
  • 原创分1分
  • 专家分0分
  • 社区居民
地板#
发布于:2007-05-05 23:30
引用第5楼hezhizhi2007-05-05 20:06发表的“”:
upper的filter确实抓不到SCSI,
只有lowerfilter才能抓到,

我想可能是因为需要经过usbstor的转换之后才转变成scsi的

.......

我反了一下disk.sys,貌似mode sense在其中实现,那么disk.sys的lower filter能看到么?
hunbalo
驱动牛犊
驱动牛犊
  • 注册日期2004-04-21
  • 最后登录2020-10-20
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望124点
  • 贡献值0点
  • 好评度85点
  • 原创分1分
  • 专家分0分
  • 社区居民
地下室#
发布于:2007-05-07 19:48
引用第7楼xtmzl2007-05-07 17:01发表的“”:
你要分清楚设备栈.
disk.sys 属于 storage class driver.  如果你把FILTER 挂在 class driver 下
就可以抓到SCSI.

那么对于usb mass storage 设备来说,这个设备栈是什么样的呢?
hunbalo
驱动牛犊
驱动牛犊
  • 注册日期2004-04-21
  • 最后登录2020-10-20
  • 粉丝0
  • 关注0
  • 积分11分
  • 威望124点
  • 贡献值0点
  • 好评度85点
  • 原创分1分
  • 专家分0分
  • 社区居民
5楼#
发布于:2007-05-12 23:38
引用第9楼xtmzl2007-05-08 11:14发表的“”:
你用DeviceTree看一下 usbstor.sys 这个驱动程序.
当插入一块U盘时,会生成两个DeviceObject 一个是 storage stack 的.
另外一个是usb stack .
如果你的FILTER 是USB stack 的upfilter,自然抓不到SCSI cmd.
虽然你的FILTER都看起来挂在USBSTOR上,却是挂在不同的DeviceObject 上的.

请问我想挂在usbstor上,inf文件要怎么写?upfilter都放在哪个键值上?
谢谢
游客

返回顶部