Reputation: 43
I am working on a .NET 4.5 C# project and I need to find out if my USB devices are connected to the same USB hub.
I googled and tried to explore structure of many ManagementObjectCollection like Win32_USBHub and Win32_PnPEntity but I could not find any WMI structure has location or port chain information.
I tried USB Device tree tool where I can see the information :
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)
Now from the above information I want to write the logic to store and compare the two ID's to identify if both device are on the same USB hub.
I tried exploring the USB device tree source code from: http://www.uwe-sieber.de/usbtreeview_e.html
But still not able to run the code because of some problem in NativeUsbLib.
Can anyone please help me share some sample code how can I get this information from WMI or from setupapi.dll ?
Upvotes: 1
Views: 2702
Reputation: 43
Finally thanks to my dear friend Lucas for pointing me to following link:
Find USB drive letter from VID/PID (Needed for XP and higher)
This solved my problem. Instead of port map now I am using ParentPnpDeviceId using CM_Get_Parent, to detect if both USB devices are connected to the same USB hub. Thank you Simon for the brilliant solution.
Upvotes: 1