快速插入和拔出USB时,GetVolumeInformationW卡住了

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了快速插入和拔出USB时,GetVolumeInformationW卡住了相关的知识,希望对你有一定的参考价值。

我试图确定文件系统是否可以使用microsofts minispy示例连接到它之前是否可访问。为了简短起见,我提供了一个设备名称路径,例如DeviceHarddiskVolume4。我想我可以使用FilterGetDosName来获得一致的根路径,然后使用GetVolumeInformationW来确定卷是否实际上是附加的;

BOOL result = GetVolumeInformationW(rootPath, NULL, 0, NULL, NULL, NULL, NULL, 0);

然而,我的问题是,如果我快速拨入和拔出USB。它在这里被卡住了,因为它试图获取数据但是卷被断开了。在安装微型过滤器之前,如何安全地确定卷是否已连接?

答案

有一个名为:GetLogicalDriveStringsW的函数,用于获取设备的路径名,而不是使用OP中所述的非持久性devicename。在一些逻辑分别处理每个驱动器并确定差异,以便您可以连接到新设备,您使用GetVolumeInformationW(letter.c_str(), NULL, NULL, NULL, NULL, NULL, NULL, NULL);

我在撰写这篇文章时遇到的其他错误与此问题无关。要点是:使用GetLogicalDriveStringsWGetVolumeInformationW

以上是关于快速插入和拔出USB时,GetVolumeInformationW卡住了的主要内容,如果未能解决你的问题,请参考以下文章

linux环境下,Qt怎么检测USB的插入和拔出

广播监听USB插入与拔出

我可以使用 win32 Setup API 来检测 USB 设备何时插入或拔出吗?

在拔出usb时动态添加串口并从组合框中删除它们

关于检测usb设备的问题

使用 PyQt5 和 pyudev 通知 QML 的“usb 设备插入”事件