windows - 将 Windows 设备路径解析为盘符

标签 windows path device

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

关于windows - 将 Windows 设备路径解析为盘符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/127124/

相关文章:

c++ - 除了 createfile 和 openfile 之外,还有任何用于获取文件句柄的 Windows API?

c++ - 有没有办法让windows输出ansi转义序列

C++ 访问受信任的根证书

c++ - 两个 Windows 应用程序可以使用命令行进行通信吗?

javascript - 在 JS 文件中找不到配置目录

c++ - 在非 ONPaint 的 MFC 方法中显示图像

Python fnmatch 过滤器用于包含子目录的模式

javascript - 如何在 JavaScript 中获取当前桌面路径? (Windows 7的)

ios - 如何在 IOS 真实设备上设置假 GPS 位置

iphone - Xcode 6.0.1 与 iOS 8.1 ,无法选择 iPhone 6+ 设备