Diskpart列表磁盘的C ++方法

时间:2015-12-02 23:38:29

标签: c++ windows disk

如果我运行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 ++获取这样的列表?

1 个答案:

答案 0 :(得分:0)

我使用这种方法:

  1. 使用GetLogicalDriveStrings()获取磁盘列表。您可以通过此调用过滤可移动或固定磁盘。

  2. 使用以下内容获取每个卷的句柄。

    HANDLE hVolume = CreateFile(volumeName, access, FILE_SHARE_READ |    FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
  3. 使用音量控制柄获取磁盘编号。我不记得你是否需要为下一位锁定/卸载音量,但这些都有详细记录,现在你可以轻松完成音量控制。

    
        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;