我正在寻找合适的 WMI Win32 或 CIM 类属性来查找 USB 设备的位置。在设备管理器中,如下所示,位置称为“Port_#0002.Hub_#0009”。关于 Windows API 中的类和属性的任何想法,或者如果它是任意值,设备管理器都会给出另一个更神秘的属性。如果是后者,“更神秘”的类和属性是什么?
图片:http: //i.stack.imgur.com/7Miwp.png
我正在寻找合适的 WMI Win32 或 CIM 类属性来查找 USB 设备的位置。在设备管理器中,如下所示,位置称为“Port_#0002.Hub_#0009”。关于 Windows API 中的类和属性的任何想法,或者如果它是任意值,设备管理器都会给出另一个更神秘的属性。如果是后者,“更神秘”的类和属性是什么?
图片:http: //i.stack.imgur.com/7Miwp.png
使用 APISetupDiGetDeviceRegistryProperty
和const
参数SPDRP_LOCATION_INFORMATION
。
您可以将 Port_#X.Hub_#Y 与 USBView 的输出交叉引用。我已经多次使用此工具来获取有关现有 USB 树的信息。
WDK 中提供了 USBView 示例。如果您对此不熟悉,只需运行它 - 该工具会遍历系统上的整个 USB 树,并打印出每个设备的信息和描述符列表,以及主机控制器和集线器上的位置。
从本示例中的 RefreshTree() 函数开始,然后您可以按照代码查看它如何枚举主机控制器、集线器和最终设备。
获取此示例源代码的最简单方法是安装 7.1.0 WDK,目前可在此处获得:http: //www.microsoft.com/en-us/download/details.aspx?id=11800