如何检测两个USB设备连接到同一个USB集线器在c#
问题描述:
我正在一个.NET 4.5 C#项目,我需要找出我的USB设备是否连接到同一个USB集线器。如何检测两个USB设备连接到同一个USB集线器在c#
我搜索了一下,并试图探索许多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获取这些信息?
答
最后感谢我亲爱的朋友卢卡斯指着我下面的链接:
Find USB drive letter from VID/PID (Needed for XP and higher)
这解决了我的问题。现在,我正在使用使用CM_Get_Parent的ParentPnpDeviceId来检测两个USB设备是否连接到同一个USB集线器,而不是端口映射。 谢谢西蒙的辉煌解决方案。