Mal*_*ise 5 c# windows usb winapi setupapi
我已经能够使用 SetupAPI 枚举 USB 设备,并且我已经查看了 WDK 中的 usbview 应用程序,但我仍然不知道如何获取USB_DEVICE_DESCRIPTOR。
有人能指出我正确的方向吗?如果不从 Hub 启动,是否就无法以良好的方式从 WinAPI 获取此信息?
最好的选择是从设备路径中提取信息并使用 SetupDi 函数获取其他部分。据我所知,设备路径始终遵循相同的约定。IE:
"\\?\usb#vid_ 0000 &pid_ 1111 # SERIAL #{ GUID }" 其中 0000 是 VID,1111 是十六进制字符串形式的 PID。SERIAL 是硬件提供的序列号或操作系统分配的序列值。
我个人发现了一个我绝对想要获取设备描述符的实例,以便以这种方式拉取串行。在某些情况下,操作系统无法识别我的硬件提供的序列号。我在硬件方面修复了这个问题,但我仍然想在 PC 方面适应旧硬件。下面是我的方法。可能还有更好的东西,但这是迄今为止我想出的最好的东西。不过,您可能仍然认为它是“hack-ish”。
-编辑-
正如 Ben 在评论中指出的,您可以通过在步骤 4 中获取的父级开发节点上使用 CM_Get_Device_ID 来跳过步骤 5、6 和 7。将此字符串中的斜杠 (\) 更改为磅 (#)。前置“\\?\”,然后附加“#{f18a0e88-c30c-11d0-8815-00a0c906bed8}”。将其用作步骤 8 中的设备路径。这可以避免迭代系统上的所有集线器设备:)
| 归档时间: |
|
| 查看次数: |
6475 次 |
| 最近记录: |