关于U盘,控制代码IOCTL_GET_USB_DESCRIPTOR问题,顶者有分!
已安装DDK,并包含相关路径,调用DeviceIoControl函数,控制代码为IOCTL_GET_USB_DESCRIPTOR,已包含相关头文件。以下为我的代码:
DWORD dwError,dwSize,dwInDataSize;
CString strInfo;
USBSCAN_GET_DESCRIPTOR UsbscanGetDescriptor = { 0 };
USB_CONFIGURATION_DESCRIPTOR UsbDeviceDescriptor = { 0 };
HANDLE hUsbDevice = CreateFile ( "\\\\.\\H:",//H盘为U盘盘符
GENERIC_READ | GENERIC_WRITE,
FILE_SHARE_READ | FILE_SHARE_WRITE,
NULL,
OPEN_EXISTING,
0,
NULL );
if ( INVALID_HANDLE_VALUE == hUsbDevice )
{
dwError = GetLastError ();
strInfo.Format("CreateFile(%d)",dwError);
MessageBox(strInfo);
return ;
}
dwSize = sizeof ( UsbDeviceDescriptor );
UsbscanGetDescriptor.DescriptorType = USB_DEVICE_DESCRIPTOR_TYPE;
UsbscanGetDescriptor.Index = 1;
UsbscanGetDescriptor.LanguageId = 0;
dwError = ( DWORD ) DeviceIoControl ( hUsbDevice, IOCTL_GET_USB_DESCRIPTOR, &UsbscanGetDescriptor,
sizeof(UsbscanGetDescriptor),
&UsbDeviceDescriptor,
dwSize, &dwInDataSize,
NULL );
if ( 0 == dwError )
{
dwError = GetLastError ( );
strInfo.Format("DeviceIoControl(%d)",dwError);
MessageBox(strInfo);
}
程序运行没问题,但DeviceIoControl函数返回值为0,用GetLastError获得错误代码为50,不明白到底什么地方出了问题,希望能给点提示或者提供点相关的资料,顶者有分,如果问题解决将另开帖送200分。