将CDRom设备与驱动器号关联

时间:2019-06-15 10:27:36

标签: windows winapi wmic cd-rom

我正在编写一个程序,用于制作CD-ROM驱动器的磁盘映像。我需要创建一个完整的磁盘映像,而不仅仅是一个卷映像,还需要一个卷名,以便可以相应地命名生成的文件。

基本上我需要这个:

image

我知道我的CD-ROM驱动器是CD-ROM 0,我需要知道那里有哪些卷。

我尝试从PowerShell查询WMI,但是没有运气。

Get-WMIObject -Class Win32_LogicalDisk给了我所有驱动器号和卷标。

Get-WmiObject Win32_DiskPartition给了我没有任何标签/字母的分区列表。

Get-WMIObject -Class Win32_PhysicalMedia是给我一个设备地址(?),例如\\.\CDROM0

Get-WMIObject -Class Win32_DiskDrivePhysicalMedia是没有用的,它里面只有硬盘驱动器,没有CD-ROM。

我想念什么?

我想要一种方法来查看\\.\CDROM0的字母D和任何标签的体积。有没有办法做到这一点?也许一些kernel32函数?

2 个答案:

答案 0 :(得分:0)

Win32_LogicalDisk WMI类具有属性VolumeName,该属性为您提供了所插入磁盘的名称(如果有的话)。这与您在屏幕快照中突出显示的内容相对应。

答案 1 :(得分:0)

根据一些先前的信息,重新启动后可能会更改多个CD-ROM的设备名称(我没有对其进行测试)。

链接:First CD-ROM device: CdRom0 or CdRom1?

因此,我建议将驱动器号与CD-ROM GUID匹配。

  1. 通过GetVolumeNameForVolumeMountPoint

    获取每个CD-ROM的GUID

    GUID,例如:VolumeName:\?\ Volume {f3b89248-8457-1ae3-9f8c-806e6f6b6923} \

    在这里,您可以使用子字符串或正则表达式来剪切出包含GUID的部分。

  2. 通过GetLogicalDrivesGetDriveType获取CD-ROM的驱动器号。

  3. 获取在步骤2中获得的每个CD-ROM驱动器号的GUID,将GUID与步骤1中GetVolumeNameforVolumeMountPoint中的GUID进行比较,如果两个GUID相同,则成功匹配。 / p>