SetupAPI を使用して USB デバイスを列挙することができました。また、WDK から usbview アプリケーションを調べましたが、まだUSB_DEVICE_DESCRIPTORを取得する方法がわかりません。
- WMI の使用は避けたいと思います。
- DeviceIoControlは、サンプル アプリ usbview が使用するものですが、実際にはハブでデバイスを列挙している場合にのみ機能します。デバイス パス (または ID) を指定して親ハブ (およびポート) にアクセスできる場合、この方法は機能する可能性がありますが、これを行う方法も特定できませんでした。
- 記述子を取得したいデバイスが混在しています。これらの一部は HID であり、一部は WinUsb.sys デバイスである可能性があります。それらが WinUsb デバイスの場合、 WinUsb_GetDescriptor を使用できますが、HIDでは機能しません (そして、Id または Path...Interface クラスからそれらの違いを見分ける方法がわかりません)。
- SetupDiGetDeviceRegistryPropertyを使用できますが、使用可能なプロパティのリストに製造元の文字列は表示されますが、ベンダー ID は表示されません。
- デバイス パスまたはデバイス ID からこの値を解析できる可能性がありますが、それは一種のハックのようです。それはただ人々がすることですか?また、Manufacturer のような他のフィールドが必要な場合は、他のメソッドに行く必要があります。USB_DEVICE_DESCRIPTOR 全体を取得できれば、必要なものはすべて揃っていると思います。
- LibUsb.Net は明らかに WinUsb デバイスのみをサポートしています。それが記述子を取得する方法です。
- どうやら WinRT にはいくつかの新しい API があるため、Windows ストア アプリには記述子を取得する優れた方法があります。しかし、これは間違いなく Windows ストア アプリではありません。また、新しい API を使用する別の方法があるかどうかもわかりません。
誰かが私を正しい方向に向けることができますか? ハブから開始しないと、WinAPI からこの情報を適切な方法で取得することはできないのでしょうか?