Как получить соотношение между (hd0,6)
и D:\
без догадок?
3 ответа
В командной строке:
diskpart
list disk
select disk x
list partition
где x - номер диска, который вы хотите выбрать.
Мне просто пришлось исправить boot.ini, когда он не мог загрузить установку WinXP - после создания новых первичных разделов на его диске.
Оказывается, WinXP был расположен в логическом томе, и загрузчик NT сначала назначает номер первичным разделам, а затем логическим томам (возможно, по порядку секторов в обоих случаях), создавая новые первичные разделы (даже в конце диска). Номер раздела WinXP изменен.
Что касается номера диска, я не знаю, но я ожидаю, что он будет еще более неясным. Кажется, я вспоминаю, что контроллеры SATA нумеруются до PATA, я представляю их по порядку разъемов (и состоянию основного устройства для дисков PATA), но не указывайте меня на этом.
Вы можете получить номер устройства и номер раздела, используя 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);
Но учтите, что логический том может находиться на нескольких физических дисках.