在使用 USB 设备时以编程方式弹出该设备


即使

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

场景:

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

  2. 我们通过"注册设备通知"获得WM_DEVICECHANGE消息,通过该消息我们可以处理DBT_DEVICEARRIVAL,DBT_DEVICEQUERYREMOVE等事件。

  3. 现在,如果设备正在使用中,如果我们想从资源管理器中弹出它,它会提示为"弹出USB大容量存储设备时出现问题"该设备当前正在使用中。关闭可能正在使用该设备的所有程序或窗口,然后重试。

问题:1:如何在使用时没有任何提示地弹出USB?

问题:2:当用户按下USB设备的资源管理器弹出时,我们如何获得通知?

提前致谢:)

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

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

因此,这不是想要在使用时弹出USB记忆棒的问题。这个问题根本没有意义。

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

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

最新更新