您如何解析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 ) );
        }
    }
}

09-25 20:27