[英]How do I obtain USB_DEVICE_DESCRIPTOR given a device path
我已经能够使用SetupAPI枚举USB设备,我已经从WDK查看了usbview应用程序,但我仍然无法弄清楚如何获取USB_DEVICE_DESCRIPTOR 。
谁能指出我正确的方向? 如果没有从Hub开始,是不是可以以一种很好的方式从WinAPI获取这些信息?
您最好的选择是从设备路径中提取信息,并使用SetupDi函数来获取其他的碎片。 据我所知,设备路径始终遵循相同的约定。 即:
“\\\\?\\ usb#vid_ 0000 &pid_ 1111 # SERIAL #{ GUID }”其中0000是VID,1111是PID作为十六进制字符串。 SERIAL是硬件提供的串行或OS分配的串行值。
我个人发现了一个实例,我绝对想要获取设备描述符以便以这种方式拉出串口。 在某些情况下,操作系统无法识别我的硬件提供的序列号。 我在硬件方面修复了这个问题,但我仍然希望在PC端容纳旧硬件。 以下是我的方法。 可能有更好的东西,但这是我迄今为止提出的最好的。 你可能仍然认为它是“hack-ish”。
-编辑-
正如Ben在评论中指出的那样,您可以通过在步骤4中获取的父节点dev节点上使用CM_Get_Device_ID来跳过步骤5,6和7.将此字符串中的斜杠(\\)更改为磅(#)。 在前面加上“\\\\?\\”,然后附加“#{f18a0e88-c30c-11d0-8815-00a0c906bed8}”。 在步骤8中将其用作设备路径。这可以避免迭代系统上的所有集线器设备:)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.