你如何解决NT风格的设备路径,例如\Device\CdRom0
,它的逻辑驱动器号,例如G:\
?
编辑:卷名称与设备路径不同,所以不幸的是GetVolumePathNamesForVolumeName()
不起作用.
希望以下代码片段能够为您提供足够的解决方案 - 在您初始化之后,您只需要遍历集合即可找到您的匹配项.在插入集合之前,您可能希望将所有内容转换为大写/小写,以帮助查找性能.
typedef basic_stringtstring; typedef map 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 ( tszLinkName, tszDevName ) ); } } }