一开始用下面的方法尝试获取:
#include <stdio.h> #include <windows.h> #include <devioctl.h> #include <usbioctl.h> #include <usbscan.h> #pragma warning(disable:4996) void getUsbDeviceDescriptor(HANDLE); int main() { HANDLE hDevice = CreateFile("\\\\.\\G:", GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL); printf("%d", hDevice); getUsbDeviceDescriptor(hDevice); CloseHandle(hDevice); } void getUsbDeviceDescriptor(HANDLE hDevice) { DWORD readed; USBSCAN_GET_DESCRIPTOR inputBuf = { 0 }; inputBuf.DescriptorType = USB_DEVICE_DESCRIPTOR_TYPE; USB_DEVICE_DESCRIPTOR outputBuf = { 0 }; bool result = DeviceIoControl(hDevice, IOCTL_GET_USB_DESCRIPTOR, &inputBuf, sizeof(USBSCAN_GET_DESCRIPTOR), &outputBuf, sizeof(USB_DEVICE_DESCRIPTOR), NULL, NULL); }
但是DeviceIoControl一直返回0,百思不得其解。上网搜了一下,其他人也