如何检测两个USB设备连接到同一个USB集线器在c#

如何检测两个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集线器,而不是端口映射。 谢谢西蒙的辉煌解决方案。