如果我运行diskpart并给它命令列表磁盘,那么它会显示一个像
这样的表Disk ### Status Size Free Dyn Gpt
-------- ------------- ------- ------- --- ---
Disk 0 Online 100 GB 0 B
Disk 1 Online 3000 GB 0 B *
Disk 2 No Media 0 B 0 B
Disk 3 Foreign 500 GB 490 GB *
Disk 4 No Media 0 B 0 B
如何使用C ++获取这样的列表?
答案 0 :(得分:0)
我使用这种方法:
使用GetLogicalDriveStrings()获取磁盘列表。您可以通过此调用过滤可移动或固定磁盘。
使用以下内容获取每个卷的句柄。
HANDLE hVolume = CreateFile(volumeName, access, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
使用音量控制柄获取磁盘编号。我不记得你是否需要为下一位锁定/卸载音量,但这些都有详细记录,现在你可以轻松完成音量控制。
STORAGE_DEVICE_NUMBER sdn;
DWORD dwBytesReturned = 0;
if (!DeviceIoControl(hVolume, IOCTL_STORAGE_GET_DEVICE_NUMBER, NULL, 0, &sdn, sizeof(sdn), &dwBytesReturned, NULL)){
}
return sdn.DeviceNumber;