gpt4 book ai didi

c++ - 获取卷列表总是说 C :\

转载 作者:行者123 更新时间:2023-11-30 00:57:39 25 4
gpt4 key购买 nike

为什么下面的代码总是报告C:\,尽管它报告不同的设备名称

  handle = FindFirstVolumeW(volName, sizeof(volName));
do{
wchar_t wVolName[MAX_PATH];
QString::fromWCharArray(volName).toWCharArray(wVolName);//make a copy of volName on wVolName
wVolName[wcslen(volName)-1] = L'\0';
wchar_t wDeviceName[MAX_PATH];
int charCount = 0;
charCount = QueryDosDeviceW(&wVolName[4], wDeviceName, ARRAYSIZE(wDeviceName));

qDebug() << QString::fromWCharArray(wVolName) << "Device: " << QString::fromWCharArray(wDeviceName);//print wVolName and wDeviceName

wchar_t driveName[MAX_PATH];
GetVolumePathName(wDeviceName, driveName, MAX_PATH);
CloseHandle(handle);

qDebug() << QString::fromWCharArray(driveName);

}while(FindNextVolume(handle, volName, sizeof(volName)));
FindVolumeClose(handle);

输出:

"\\?\Volume{5c77cc58-d5ab-11e0-a0ec-806d6172696f}" Device:  "\Device\HarddiskVolume2" 
"C:\"
"\\?\Volume{5c77cc59-d5ab-11e0-a0ec-806d6172696f}" Device: "\Device\HarddiskVolume3"
"C:\"
"\\?\Volume{5c77cc57-d5ab-11e0-a0ec-806d6172696f}" Device: "\Device\CdRom0"
"C:\"
"\\?\Volume{5c77cc56-d5ab-11e0-a0ec-806d6172696f}" Device: "\Device\Floppy0"
"C:\"
"\\?\Volume{8d974f2c-e9a1-11e0-b7da-0013d407432f}" Device: "\Device\Harddisk1\DP(1)0- 0+8"
"C:\"

为什么它不报告 DE 等 ..

编辑

以及如何获取分配给卷的驱动器号

最佳答案

函数的文档说明了一切:

You must specify a valid Win32 namespace path. If you specify an NT namespace path, for example, "\DosDevices\H:" or "\Device\HardDiskVolume6", the function returns the drive letter of the current volume, not the drive letter of that NT namespace path.

顺便说一句,一个卷可以挂载到多个盘符(像C:这样的盘符只不过是NT命名空间中的一个符号链接(symbolic link)),所以它真的没有意义以这种方式翻译。

关于c++ - 获取卷列表总是说 C :\,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7600373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com