Я пытаюсь определить, является ли диск системным зарезервированным диском (PhysicalDrive0
или C-Drive
), используя функцию DeviceIoControl
. Однако мой код всегда возвращает true для всех дисков.
HANDLE hDevice; // handle to the drive to be examined
BOOL bResult; // results flag
DWORD junk; // discard results
PARTITION_INFORMATION_MBR *pdg
hDevice = CreateFile(TEXT("\\\\.\\C:"), GENERIC_READ | GENERIC_WRITE, FILE_SHARE_READ |
FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL);
bResult = DeviceIoControl(
hDevice, // device to be queried
IOCTL_DISK_GET_PARTITION_INFO_EX, // operation to perform
NULL, 0, // no input buffer
pdg, sizeof(*pdg), // output buffer
&junk, // # bytes returned
(LPOVERLAPPED) NULL // synchronous I/O
);
bResult
всегда возвращает 0, что указывает на успешное выполнение функции.- Даже
pdg->PartitionType
имеет ненужную информацию и не возвращаетtrue
.
PARTITION_INFORMATION_EX
), поэтому она вернула 0 (успех). Теперь вам нужно взглянуть на свою структуруPARTITION_INFORMATION_EX
и посмотреть, есть ли там запрошенная вами информация или нет. - person   schedule 24.01.2013