阅读:1913回复:7
如何删除usb设备
我做了一个usbstor的上层过滤,现在想添加删除U盘的功能。
为什么我构造IRP_MN_REMOVE_DEVICE,再把这个IRP往下发,没有任何反应呢?即没错误也没效果。不过,似乎插入U盘时,系统处理的过程消耗时间变长了一点。 ![]() 请高手指教,哪怕给点小小的提示,在下感激不尽... |
|
沙发#
发布于:2008-05-27 22:44
如果你保证其他工作,例如删除pdo,好像还要IoInvalidBusRelation。好久没搞忘记了。
|
|
板凳#
发布于:2008-05-28 12:18
是IoInvalidateDeviceRelations吗?我看MSDM上说,这个是通知pnp管理器,有设备改变了。
可是,硬件根本没变啊。 用windbg看系统的安全删除过程中的IRP情况,它是先发了三个IRP_MN_QUERY_DEVICE_RELATIONS,再发IRP_MN_QUERY_REMOVE_DEVICE,最后IRP_MN_REMOVE_DEVICE。我也跟着做,但就是没效果。 |
|
地板#
发布于:2008-05-28 12:56
要先删掉pdo,也就是busdriver中删掉它,但如果不是bus driver,我就不知道怎么屏蔽掉了。
bus driver是这么做的. 1.处理前面那些IRP; 2. IoInvalidateBusRelation,不报告这个pdo了。 2. 最后删掉PDO; |
|
地下室#
发布于:2008-05-28 15:48
删除PDO,呵呵,这条路我觉得很难走...
我看MSDN上说,当U盘被安全删除了,但还没拔出的情况下,BUS DRIVER还是保持着U盘的PDO的,直到拔下U盘,BUS DRIVER才删除PDO。 不过,非常感谢你的帮助! |
|
5楼#
发布于:2008-05-29 14:42
我想知道,为什么我发送IRP_MN_REMOVE_DEVICE它不理我,难道只认PNP管理器的吗?
|
|
6楼#
发布于:2008-05-31 13:33
再顶一下
|
|
7楼#
发布于:2008-09-04 10:46
顶一下~~
|
|