Filesystems 快速插入和拔出USB时GetVolumeInformation卡滞

Filesystems 快速插入和拔出USB时GetVolumeInformation卡滞,filesystems,wdk,Filesystems,Wdk,在使用MicrosoftsMinispy示例连接到文件系统之前,我试图确定文件系统是否可以访问。简而言之,我得到了一个设备名路径,比如\device\HarddiskVolume4\。我想我可以使用FilterGetDosName来获得一个一致的根路径,然后使用GetVolumeInformationW来确定卷是否实际已连接 BOOL result = GetVolumeInformationW(rootPath, NULL, 0, NULL, NULL, NULL, NULL, 0); 然而

在使用MicrosoftsMinispy示例连接到文件系统之前,我试图确定文件系统是否可以访问。简而言之,我得到了一个设备名路径,比如
\device\HarddiskVolume4\
。我想我可以使用FilterGetDosName来获得一个一致的根路径,然后使用GetVolumeInformationW来确定卷是否实际已连接

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

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

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

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