在Windows XP中如何确定D:\的磁盘及分区号?

在Windows XP中如何确定D:\的磁盘及分区号?

(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 驱动器的主状态)编号的,但请不要引用我的话。

相关内容