快速插入和拔出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);
我在撰写这篇文章时遇到的其他错误与此问题无关。要点是:使用GetLogicalDriveStringsW
和GetVolumeInformationW
。
以上是关于快速插入和拔出USB时,GetVolumeInformationW卡住了的主要内容,如果未能解决你的问题,请参考以下文章