(hd0,6)
如何不经过猜测就得到和之间的关系D:\
?
答案1
您可以使用 IOCTL_STORAGE_GET_DEVICE_NUMBER 获取设备编号和分区编号:
HANDLE h = ::CreateFile(L"\\\\.\\d:", 0, 0, NULL, OPEN_EXISTING, 0, NULL);
STORAGE_DEVICE_NUMBER info = {};
DWORD bytesReturned = 0;
::DeviceIoControl(h, IOCTL_STORAGE_GET_DEVICE_NUMBER, NULL, 0, &info, sizeof(info), &bytesReturned, NULL);
但请注意,逻辑卷可以位于多个物理磁盘上。
答案2
在命令提示符中:
diskpart
list disk
select disk x
list partition
其中 x 是您想要选择的磁盘编号。
答案3
当它无法启动 WinXP 安装时,我只需要修复 boot.ini --在其驱动器中创建新的主分区之后。
事实证明 WinXP 位于逻辑卷中,而 NT 的加载器首先为主分区分配一个编号,然后为逻辑卷分配一个编号(在两种情况下都按扇区顺序分配),因此通过创建新的主分区(即使在磁盘末尾),WinXP 的分区号也发生了变化。
至于磁盘编号,我不太清楚,但我认为它应该更加模糊。我似乎记得 SATA 控制器的编号早于 PATA,我猜是按连接器顺序(以及 PATA 驱动器的主状态)编号的,但请不要引用我的话。