求助,DeviceIoControl获取USB设备descriptor失败问题

尴尬猫 2023-08-23 16:45:43
 HANDLE hDevice = CreateFile(L"\\\\?\\usbstor#disk&ven_kingston&prod_datatraveler_3.0&rev_#60a44c425091f1a1b98300ba&0#{53f56307-b6bf-11d0-94f2-00a0c91efb8b}",
        GENERIC_WRITE | GENERIC_READ, FILE_SHARE_WRITE | FILE_SHARE_READ,
        NULL, OPEN_EXISTING, 0, NULL);
 
    if(hDevice == INVALID_HANDLE_VALUE)
    {
        printf("Failed to open USB device\n");
        return 1;
    }
 
    USB_DEVICE_DESCRIPTOR *deviceDescriptor;
    DWORD bytesRead;
 
    BYTE descriptorBuffer[1024];
    USB_DESCRIPTOR_REQUEST request;
    request.ConnectionIndex = 0; // 连接索引
    request.SetupPacket.bRequest = USB_REQUEST_GET_DESCRIPTOR;
    request.SetupPacket.wValue = (USB_STRING_DESCRIPTOR_TYPE << 8) | 0x00; // 获取设备描述符
    request.SetupPacket.wIndex = 0x0409; // 英文语言 ID
    request.SetupPacket.wLength = sizeof(descriptorBuffer);
    BOOL success = DeviceIoControl(hDevice, IOCTL_USB_GET_DESCRIPTOR_FROM_NODE_CONNECTION, &request, sizeof(USB_DESCRIPTOR_REQUEST), &request, sizeof(USB_DESCRIPTOR_REQUEST), &bytesRead, NULL);

我这边想用C++代码获取USB设备的descriptor的信息。这边success总是为0,GetLastError()获取的值为50(貌似为不支持网络请求)

不知道DeviceIoControl函数是否是哪里传值有问题?求大神帮忙!!!!!!!

...全文
433 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
尴尬猫 2023-08-30
  • 打赏
  • 举报
回复

顶个

赵4老师 2023-08-23
  • 打赏
  • 举报
回复

研究一下命令行设备管理器devcon?

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧