DeviceIoControl如何使用
Pixie 2000-08-30 07:36:00 各位大虾:
本人需要得到一个硬件设备的产品信息,使用了DeviceIoControl函数的IOCTL_CHANGER_GET_PRODUCT_DATA命令。但是返回值总是FALSE,使用GetLastError()的返回值是1。
请问如何才能使它正常工作。
我用的程序如下:
HANDLE hDevice; // handle to the drive to be examined
hDevice = CreateFile("\\\\.\\PhysicalDrive0",
GENERIC_ALL|STANDARD_RIGHTS_ALL,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL);
if (hDevice == INVALID_HANDLE_VALUE) {
DWORD dwError=GetLastError();
return ;
}
BOOL bResult; // results flag
DWORD dwRetSize;
DWORD dwError;
CHANGER_PRODUCT_DATA ProductData ;
bResult=DeviceIoControl(
(HANDLE) hDevice,
IOCTL_CHANGER_GET_PRODUCT_DATA,
NULL,
0,
(LPVOID) &ProductData,
(DWORD) sizeof(CHANGER_PRODUCT_DATA) ,
(LPDWORD) &dwRetSize,
NULL
);
dwError=GetLastError();
CloseHandle(hDevice);