2017-05-04 1 views
0

Je travaille sur un projet .NET 4.5 C# et j'ai besoin de savoir si mes périphériques USB sont connectés au même concentrateur USB.Comment détecter deux périphériques USB connectés au même concentrateur USB dans C#

J'ai recherché et cherché à explorer la structure de plusieurs ManagementObjectCollection comme Win32_USBHub et Win32_PnPEntity mais je n'ai trouvé aucune structure WMI ayant des informations sur l'emplacement ou la chaîne de ports.

J'ai essayé outil d'arborescence des périphériques USB où je peux voir les informations:

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) 

Maintenant, à partir des informations ci-dessus que je veux écrire de la logique pour stocker et comparer les deux ID pour identifier si les deux sont fournis sur le même hub USB.

J'ai essayé d'explorer le périphérique USB code source d'arbre de: http://www.uwe-sieber.de/usbtreeview_e.html

Mais toujours pas en mesure d'exécuter le code en raison d'un problème dans NativeUsbLib.

Quelqu'un peut-il m'aider s'il vous plaît partager un exemple de code comment puis-je obtenir cette information de WMI ou de setupapi.dll?

Répondre

0

Enfin, grâce à mon cher ami Lucas pour moi pointant lien suivant:

Find USB drive letter from VID/PID (Needed for XP and higher)

Cela a résolu mon problème. Au lieu de la carte de port maintenant j'utilise ParentPnpDeviceId en utilisant CM_Get_Parent, pour détecter si les deux périphériques USB sont connectés au même concentrateur USB. Merci Simon pour la solution brillante.