当前位置:  开发笔记 > 编程语言 > 正文

将Windows设备路径解析为驱动器号

如何解决《将Windows设备路径解析为驱动器号》经验,为你挑选了1个好方法。

你如何解决NT风格的设备路径,例如\Device\CdRom0,它的逻辑驱动器号,例如G:\

编辑:卷名称与设备路径不同,所以不幸的是GetVolumePathNamesForVolumeName()不起作用.



1> RichS..:

希望以下代码片段能够为您提供足够的解决方案 - 在您初始化之后,您只需要遍历集合即可找到您的匹配项.在插入集合之前,您可能希望将所有内容转换为大写/小写,以帮助查找性能.

typedef basic_string tstring;
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 ) );
        }
    }
}


如果需要处理可移动驱动器,可以使用GetLogicalDeviceStrings动态获取现有设备.您需要截断设备字符串,以便尾随的"\"不会传递给QueryDosDevice.
推荐阅读
和谐啄木鸟
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有