Windows 将驱动器号转换为分区ID/磁盘ID

Windows 将驱动器号转换为分区ID/磁盘ID,windows,winapi,drive-letter,deviceiocontrol,Windows,Winapi,Drive Letter,Deviceiocontrol,给定一个驱动器号,如何在不使用注册表的情况下获取和?您是否尝试过简单地调用?我需要的是WMI类Win32\u磁盘分区。现在了解如何使用WMI从驱动器号获取此信息 Win32\u LogicalDisk也很有用,而且 更新:嗯,这不行!无论如何,Windows安装程序中没有(!!),因此我正在使用另一个答案QueryDosDevice(例如\\.\PhysicalDisk1\Partition0)并将其整合在一起。这太糟糕了,微软,在你的安装程序中接受一个该死的路径 回答:IOCTL\u VOL

给定一个驱动器号,如何在不使用注册表的情况下获取和?

您是否尝试过简单地调用?

我需要的是
WMI
Win32\u磁盘分区。现在了解如何使用
WMI
从驱动器号获取此信息

Win32\u LogicalDisk
也很有用,而且

更新:嗯,这不行!无论如何,Windows安装程序中没有(!!),因此我正在使用另一个答案
QueryDosDevice
(例如
\\.\PhysicalDisk1\Partition0
)并将其整合在一起。这太糟糕了,微软,在你的安装程序中接受一个该死的路径



回答:
IOCTL\u VOLUME\u GET\u VOLUME\u DISK\u extends
用于获取
磁盘ID
。DeviceIoControl
IOCTL\u DISK\u GET\u PARTITION\u INFO\u EX
(感谢TLama)为我获取
分区ID

嗨;对于该分区ID,您是指该分区基于1的索引?请参见此处。这是我需要确定的。这看起来并没有给我磁盘ID或分区ID。我正在使用安装Windows本身的程序。安装程序需要磁盘id和分区id。而不是虚拟映射。@unixman83:因此返回的“目标路径”与
“\\。\PhysicalDisk1\Partition0”
?嗯,文档的说法不同:
\Device\HarddiskVolume1
。我没有试过。我想那会有用的。我明天就得试试。@unixman83:我也没试过。现在我看到了你所说的文档中的句子。我认为两种形式都是有效的,一种形式必须是另一种形式的链接。然后我们只需要弄清楚如何在设备名称空间中遵循符号链接。