求助,DeviceIoControl获取USB设备descriptor失败问题
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函数是否是哪里传值有问题?求大神帮忙!!!!!!!
...全文
相关推荐
基于VC_的USB描述符显示实现
研究并实现了在W indow s 环境下选用V isual C+ + 语言开发环境, 使用W IN 32 中的一些A P I 函数, 结合 W indow s DDK 提供的U SB 的数据结构和运行常量, 实现U SB 设备的显示, 即U SB 设备连接状态的获取和各种描述符的 完整显示。并且详细介绍了笔者实际开发的过程, 提供了大量的源程序及说明。
C#原生USB HID通信骨架:Windows API手撸DeviceIoControl实现
USB HID是一种广泛应用于嵌入式设备与PC交互的标准化人机接口协议,其核心在于报告描述符解析、Report ID管理及Windows HID驱动栈的底层行为理解。基于.NET原生实现的HID通信需深入掌握SetupDi系列API、DeviceIoControl控制码调用、OVERLAPPED异步I/O模型以及二进制Report Descriptor手动解析等关键技术。该方案规避了HidLibrary等第三方库的黑盒缺陷和UWP API的沙箱限制,提供跨.NET 6+平台兼容、热插拔稳定、带日志追踪与单元
vc编写关于usb的程序五
vc编写关于usb的程序 可以协助我们编写usb接口程序
VB6获取电脑硬盘号
通过VB6.0实现获取PC电脑、笔记本电脑的硬盘序列编号。
易语言源码易语言特殊取硬盘特征源码
易语言源码易语言特殊取硬盘特征源码


