我正在开发.NET 4.5 C#项目,我需要查看我的USB设备是否连接到同一个USB集线器。
我用谷歌搜索并试图探索许多ManagementObjectCollection的结构,如Win32_USBHub和Win32_PnPEntity,但我找不到任何WMI结构有位置或端口链信息。
我尝试使用USB设备树工具查看信息:
Device: 1
Location IDs : PCIROOT(0)#PCI(1A00)#USBROOT(0)#USB(1)#USB(3)#USB(1)
Device: 2
Location IDs : PCIROOT(0)#PCI(1A00)#USBROOT(0)#USB(1)#USB(3)#USB(2)
现在从上面的信息我想写出存储和比较两个ID的逻辑,以确定两个设备是否在同一个USB集线器上。
我尝试从以下方面探索USB设备树源代码: http://www.uwe-sieber.de/usbtreeview_e.html
但由于NativeUsbLib中的某些问题,仍然无法运行代码。
任何人都可以帮我分享一些示例代码如何从WMI或setupapi.dll获取此信息?
答案 0 :(得分:0)
最后感谢亲爱的朋友卢卡斯指点我的链接:
Find USB drive letter from VID/PID (Needed for XP and higher)
这解决了我的问题。我现在使用ParentPnpDeviceId而不是端口映射,使用CM_Get_Parent来检测两个USB设备是否都连接到同一个USB集线器。 谢谢西蒙的出色解决方案。