関数を使用して、ドライブがシステム予約ドライブ (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
。