阅读:1337回复:1
问个U盘过滤的问题
我想作个U盘过滤驱动来控制U盘的只读功能,同时还要得到写文件的文件名和内容。
如果在usb class设一个lowerfilters,等于对usbstor.sys做过滤,可以截获所有的USB设备的插拔情况,但不好得到写的内容。 如果对某个设备做upperfilters,等于对disk.sys做过滤,可以收到IRP_MJ_WRITE,也可以得到写的内容。问题是如果有新设备插入的话我就没法过滤它了。除非在得到新设备通知后,对这个设备在注册表里写个upperfilters,然后replug这个设备一下(禁用再启用?)但不想这样,于是就想手动IoAttachDeviceToDeviceStack,不通过wdm过滤驱动了。但这样问题就来了。 IoAttachDeviceToDeviceStack只能把自己加载到对方attached chain的最高层,而我现在是要加到disk.sys和pargmgr.sys中间。后来想了个办法,先把pargmgr.sys 给IoDetach掉,再attach自己,再attach pargmgr.sys ,这样我就处在中间位置了。用devicetree看到的效果和WDM的效果一模一样。但此时却收不到任何IRP了,请问是怎么回事? 罗里罗嗦一大堆不知道有没有人明白我的意思?有人遇到过同样的问题吗 |
|
沙发#
发布于:2007-02-03 09:09
对USB Mass Storage 设备做过滤就可以了,这个是对usbstor.sys做过滤
根据URB中的SCIS指令来判断何时取数据 |
|