USB device information using WMI
The System.Management namespace of the .NET framework has some Windows-specific features for recovering information regarding a USB device. The following list of Windows Management Instrumentation (WMI) classes are enough to recover almost all information one could need regarding the device.
-
Information regarding vendor and product IDs, device name etc
-
Information regarding the driver itself such as driver file name and path
-
Information regarding the driver inf file and more
The FriendlyName
attribute is common to all of these classes and can be used to filter for a specific device.
This is how one can query for a specific USB device if you have a product and vendor ID for it
ManagementObjectSearcher searcher = new ManagementObjectSearcher(
"SELECT PNPDeviceID, Name, Service FROM Win32_PnPEntity WHERE PNPDeviceID LIKE "
+ "'%VID[_]xxxx&PID[_]xxxx%'");
foreach (ManagementObject entity in searcher.Get())
{
// do something useful
}
The Service field can be used to determine which system driver is being used, or filter results based on it.
These are some values the field can assume
-
BthPan
Bluetooth PAN (personal area network) profile device.
-
usb_rndisx
USB RNDIS device.
Kudos to Emerson de Lira Espinola for helping out with this.