如何解析 NT 样式的设备路径,例如\Device\CdRom0
,到其逻辑驱动器号,例如G:\
?
编辑:不幸的是,卷名称与设备路径不同GetVolumePathNamesForVolumeName()
行不通的。
希望下面的代码足以解决这个问题 - 在初始化它之后,您只需要迭代集合即可找到匹配项。您可能希望在插入集合之前将所有内容转换为大写/小写,以帮助提高查找性能。
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 ) );
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)