解析Windows设备的驱动器号路径
时间:2020-03-06 14:39:41 来源:igfitidea点击:
我们如何解析NT样式的设备路径,例如\ Device \ CdRom0到其逻辑驱动器号,例如" G:\
"?
编辑:卷名与设备路径不同,因此不幸的是," GetVolumePathNamesForVolumeName()"将不起作用。
解决方案
也许我们可以使用GetVolumeNameForMountPoint并遍历所有安装点A:\到Z:\,在找到匹配项时中断?
http://msdn.microsoft.com/zh-CN/library/aa364994(VS.85).aspx
(我没有尝试过)
希望在初始化之后,以下代码可以为我们提供足够的解决方案,我们只需要遍历集合以找到匹配项即可。我们可能需要将所有内容都转换为大写/小写,然后再插入集合中以帮助提高查找性能。
typedef basic_string<TCHAR> tstring; typedef map<tstring, tstring> HardDiskCollection; void Initialise( HardDiskCollection &_hardDiskCollection ) { TCHAR tszLinkName[MAX_PATH] = { 0 }; TCHAR tszDevName[MAX_PATH] = { 0 }; TCHAR tcDrive = 0; _tcscpy_s( tszLinkName, MAX_PATH, _T("a:") ); for ( tcDrive = _T('a'); tcDrive < _T('z'); ++tcDrive ) { tszLinkName[0] = tcDrive; if ( QueryDosDevice( tszLinkName, tszDevName, MAX_PATH ) ) { _hardDiskCollection.insert( pair<tstring, tstring>( tszLinkName, tszDevName ) ); } } }