BYTE LayoutInfo[0xFFFF];
// Для WinNT получаем информацию о расположении лог. дисков на утройстве hDisk.
// То что hDisk — лог. диск не имеет значения, функция выполнится для физ. диска,
// на котором находится hDisk. Если у нас Win9x, то DeviceIoControl вернет FALSE
if(!DeviceIoControl(hDisk, IOCTL_DISK_GET_DRIVE_LAYOUT, NULL, 0,
LayoutInfo, 0xFFFF, &junk, NULL))
{
CloseHandle(hDisk);
continue;
}
// Сохраняем сигнатуру физического диска для данного лог. диска
list[*counter].sign = ((DRIVE_LAYOUT_INFORMATION*)LayoutInfo)->Signature;
CloseHandle(hDisk);
}
counter++;
}
}
Для NT:
Далее вызываем QueryDosDevice: QueryDosDevice("PhysicalDriveN", Buff, 1024) для каждого диска. Если она вернула TRUE, то диск имеется
и можно получить его сигнатуру, описанным выше способом: