阅读:1490回复:4
如何获取安全的拔除Usb盘时的事件
用户如果要安全的拔除Usb盘,必须通过右下的”安全拔下或弹出“的小工具来进行,此时如何获得这一消息呢.
在filemon中,监控了usb盘后,如果不能截获这一消息,提前把 过滤设备deattach掉的话,usb盘就不能安全拔掉了,说有应用程序 打开了这个设备,不能拔除. 各位兄弟可有什么好的建议. |
|
最新喜欢:ljmmar... |
沙发#
发布于:2004-12-10 15:13
在应用层捕获
WM_DEVICECHANGE消息 判断是否为DBT_DEVICEREMOVECOMPLETE |
|
板凳#
发布于:2004-12-10 16:45
在应用层好像不行呀,我现在遇到的问题是由于过滤设备指向了USB盘设备,所以不能安全拔除,即不能停止,也就是说收不到WM_DEVICECHANGE消息,除非强行拔出来.
新的filemon已经能够监控usb存储设备,也能安全停止usb设备, 但没有原码,不知道是怎么做的. |
|
地板#
发布于:2004-12-10 16:58
在应用层好像不行呀,我现在遇到的问题是由于过滤设备指向了USB盘设备,所以不能安全拔除,即不能停止,也就是说收不到WM_DEVICECHANGE消息,除非强行拔出来. 应用层肯定是可以的。 就是不知道filemon是如何做的,老兄简单介绍一下吧 |
|
|
地下室#
发布于:2004-12-13 14:16
应用层肯定是可以的。
就是不知道filemon是如何做的,老兄简单介绍一下吧 [/quote] 在filemon中,在停止u盘时候,驱动会得到 detach 的消息,触发FastIoDetachDevice()历程, 将我们创建的过滤设备删除掉 IoDetachDevice( TargetDevice ); IoDeleteDevice( SourceDevice ); 但停止还是没成功,说还是有程序在使用,不能拔出u盘. 我搞不懂还有什么地方指向了u盘的设备. [编辑 - 12/13/04 by yearnyan] |
|