以编程方式弹出USB设备正在使用中

时间:2014-12-23 12:21:30

标签: c++ c windows mfc

如果USB设备正在使用,我如何以编程方式弹出USB设备?

方案:

  1. 连接到系统的USB设备。

  2. 我们通过“RegisterDeviceNotification”获取WM_DEVICECHANGE消息,通过它我们可以处理DBT_DEVICEARRIVAL,DBT_DEVICEQUERYREMOVE等事件。

  3. 现在,如果设备正在使用中,如果我们要将它从资源管理器中弹出,则会提示“弹出USB大容量存储设备问题”此设备当前正在使用中。关闭可能正在使用该设备的所有程序或窗口,然后重试。“
  4. 问题:1:如何在没有任何提示的情况下弹出USB?

    问题:2:当用户从浏览器弹出USB设备时,我们如何收到通知?

    提前致谢:)

1 个答案:

答案 0 :(得分:0)

好吧,你无法机械弹出它。那么软件弹出它意味着什么呢?这意味着Windows将阻止为文件或目录创建任何进一步的句柄。因此,之后移除USB记忆棒是安全的

现在USB棒正在使用是什么意思?这只意味着有开放的手柄。是否阻止创建任何进一步的句柄并没有什么区别。在手柄打开时移除USB记忆棒意味着您可能会损坏USB记忆棒上的内容。

因此,想要在使用时弹出USB记忆棒不是问题。这个问题完全毫无意义。

请注意,Windows已经告诉您实际应该执行的操作:关闭可能正在使用该设备的所有程序或窗口,然后重试。

问题二同样也没有多大意义。当磁盘F:消失时,您为什么要关心细节?毕竟,如果您有理由关心(例如打开文件),Windows就会阻止该操作。