firtank
驱动牛犊
驱动牛犊
  • 注册日期2005-09-11
  • 最后登录2013-09-27
  • 粉丝1
  • 关注0
  • 积分14分
  • 威望96点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
阅读:1914回复:7

如何删除usb设备

楼主#
更多 发布于:2008-05-27 17:32
我做了一个usbstor的上层过滤,现在想添加删除U盘的功能。
为什么我构造IRP_MN_REMOVE_DEVICE,再把这个IRP往下发,没有任何反应呢?即没错误也没效果。不过,似乎插入U盘时,系统处理的过程消耗时间变长了一点。

请高手指教,哪怕给点小小的提示,在下感激不尽...
treedi
驱动牛犊
驱动牛犊
  • 注册日期2001-07-13
  • 最后登录2018-05-28
  • 粉丝0
  • 关注0
  • 积分181分
  • 威望28点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-05-27 22:44
如果你保证其他工作,例如删除pdo,好像还要IoInvalidBusRelation。好久没搞忘记了。
firtank
驱动牛犊
驱动牛犊
  • 注册日期2005-09-11
  • 最后登录2013-09-27
  • 粉丝1
  • 关注0
  • 积分14分
  • 威望96点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2008-05-28 12:18
是IoInvalidateDeviceRelations吗?我看MSDM上说,这个是通知pnp管理器,有设备改变了。
可是,硬件根本没变啊。
用windbg看系统的安全删除过程中的IRP情况,它是先发了三个IRP_MN_QUERY_DEVICE_RELATIONS,再发IRP_MN_QUERY_REMOVE_DEVICE,最后IRP_MN_REMOVE_DEVICE。我也跟着做,但就是没效果。
treedi
驱动牛犊
驱动牛犊
  • 注册日期2001-07-13
  • 最后登录2018-05-28
  • 粉丝0
  • 关注0
  • 积分181分
  • 威望28点
  • 贡献值0点
  • 好评度18点
  • 原创分0分
  • 专家分0分
地板#
发布于:2008-05-28 12:56
要先删掉pdo,也就是busdriver中删掉它,但如果不是bus driver,我就不知道怎么屏蔽掉了。
bus driver是这么做的.
  1.处理前面那些IRP;
  2. IoInvalidateBusRelation,不报告这个pdo了。
  2. 最后删掉PDO;
firtank
驱动牛犊
驱动牛犊
  • 注册日期2005-09-11
  • 最后登录2013-09-27
  • 粉丝1
  • 关注0
  • 积分14分
  • 威望96点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2008-05-28 15:48
删除PDO,呵呵,这条路我觉得很难走...
我看MSDN上说,当U盘被安全删除了,但还没拔出的情况下,BUS DRIVER还是保持着U盘的PDO的,直到拔下U盘,BUS DRIVER才删除PDO。
不过,非常感谢你的帮助!
firtank
驱动牛犊
驱动牛犊
  • 注册日期2005-09-11
  • 最后登录2013-09-27
  • 粉丝1
  • 关注0
  • 积分14分
  • 威望96点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2008-05-29 14:42
我想知道,为什么我发送IRP_MN_REMOVE_DEVICE它不理我,难道只认PNP管理器的吗?
firtank
驱动牛犊
驱动牛犊
  • 注册日期2005-09-11
  • 最后登录2013-09-27
  • 粉丝1
  • 关注0
  • 积分14分
  • 威望96点
  • 贡献值0点
  • 好评度29点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2008-05-31 13:33
再顶一下
zjxj1988
驱动牛犊
驱动牛犊
  • 注册日期2007-03-06
  • 最后登录2009-03-20
  • 粉丝0
  • 关注0
  • 积分3分
  • 威望49点
  • 贡献值0点
  • 好评度17点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2008-09-04 10:46
顶一下~~
游客

返回顶部