Como obtenho USB_DEVICE_DESCRIPTOR devido a um caminho do dispositivo

Consegui enumerar dispositivos USB usando o SetupAPI e observei o aplicativo usbview do WDK, mas ainda não consigo descobrir como obter oUSB_DEVICE_DESCRIPTOR.

Prefiro evitar o uso do WMI.DeviceIoControl é o que o aplicativo de exemplo usbview usa, mas que realmente funciona apenas se você estiver enumerando dispositivos em um hub. Suponho que se eu puder acessar o hub pai (e a porta) com um caminho (ou ID) de dispositivo, esse método poderá funcionar, mas também não consegui determinar como fazer isso.Eu tenho uma mistura de dispositivos para os quais gostaria de obter o descritor. Alguns deles são HIDs e é possível que alguns sejam dispositivos WinUsb.sys. Se eles são dispositivos WinUsb, posso usarWinUsb_GetDescriptor, mas isso não funcionará para os HIDs (e eu não sei diferenciar entre eles da classe Id ou Path ... Interface, acho?).eu poderia usarSetupDiGetDeviceRegistryProperty mas na lista de propriedades disponíveis, posso ver a sequência do fabricante, mas não a ID do fornecedor.Eu poderia analisar esse valor do caminho do dispositivo ou do ID do dispositivo, mas isso parece meio que ... hack-ish. Mas é exatamente isso que as pessoas fazem? Além disso, ainda me resta outros métodos, se eu quiser outros campos como o fabricante, onde se eu pudesse obter todo o USB_DEVICE_DESCRIPTOR, acho que teria tudo o que preciso.O LibUsb.Net suporta apenas dispositivos WinUsb aparentemente. É assim que parece obter o descritor.Aparentemente, o WinRT possui algumas novas APIs e, portanto, os aplicativos da Windows Store têm uma ótima maneira de obter o descritor. Definitivamente, esse não é um aplicativo da Windows Store e não sei se existe outra maneira de usar as APIs mais recentes.

Alguém pode me apontar na direção certa? Não é possível obter essas informações da WinAPI de maneira agradável sem iniciar no Hub?

questionAnswers(0)

yourAnswerToTheQuestion