我已经能够使用 SetupAPI 枚举 USB 设备,并且我查看了 WDK 中的 usbview 应用程序,但我仍然不知道如何获取USB_DEVICE_DESCRIPTOR。
- 我宁愿避免使用 WMI。
- DeviceIoControl是示例应用程序 usbview 使用的,但只有在您枚举集线器上的设备时才真正起作用。我想如果我可以在给定设备路径(或 ID)的情况下到达父集线器(和端口),则此方法可能有效,但我也无法确定如何执行此操作。
- 我有多种设备,我想为其获取描述符。其中有些是 HID,有些可能是 WinUsb.sys 设备。如果它们是 WinUsb 设备,我可以使用WinUsb_GetDescriptor,但这不适用于 HID(我不知道如何从 Id 或 Path...Interface 类中区分它们?我猜?)。
- 我可以使用SetupDiGetDeviceRegistryProperty,但在可用属性列表中,我可以看到制造商字符串,但看不到供应商 ID。
- 我可以从设备路径或设备 ID 中解析这个值,但这似乎有点……hack-ish。这只是人们所做的吗?此外,如果我想要制造商等其他领域,它仍然会让我采用其他方法,如果我可以得到整个 USB_DEVICE_DESCRIPTOR,我想我会拥有我需要的一切。
- LibUsb.Net 显然只支持 WinUsb 设备。这就是它似乎获得描述符的方式。
- 显然 WinRT 有一些新的 API,因此 Windows Store 应用程序有一个很好的方式来获取描述符。但这绝对不是 Windows Store 应用程序,而且我不知道还有其他方法可以使用较新的 API。
谁能指出我正确的方向?如果不从 Hub 开始,是否不可能以一种很好的方式从 WinAPI 获取这些信息?