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

时间:2018-09-10 12:41:21

标签: filesystems wdk

在尝试使用Microsoft的minispy示例将文件系统附加到文件系统之前,我试图确定文件系统是否可访问。为了简短起见,我提供了一个设备名称路径,例如\Device\HarddiskVolume4\。我以为可以使用FilterGetDosName获取一致的根路径,然后使用GetVolumeInformationW来确定是否实际连接了该卷;

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

但是,我的问题是,如果我快速将USB插入和拔出。它在尝试获取数据时被卡在此处,但该卷已断开连接。在连接微型过滤器之前,如何安全地确定是否已连接卷?

1 个答案:

答案 0 :(得分:0)

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

撰写本文时遇到的其他错误与该问题无关。重点是:使用GetLogicalDriveStringsWGetVolumeInformationW