Scanning for a Human Interface Device (HID) using C#

Jim Fell picture Jim Fell · Sep 16, 2010 · Viewed 17k times · Source

I am developing a C# .NET 2.0 application wherein I need to scan for an attached HID. How can this be done? Because it is a HID, Windows does not assign a COM port to it. I only need to programmatically determine if the device is attached. Thank you.

ADDITIONAL INFORMATION

When I connect the USB device to my computer two entries appear under Human Interface Devices in the Device Manager. Clicking into their Properties yields this information in their respective Details tabs:

HID-compliant device Device Instance Id: HID\VID_1795&PID_6004\7&2694D932&0&0000

USB Human Interface Device Device Instance Id: USB\VID_1795&PID_6004\B973000000EB0D00

Answer

Jim Fell picture Jim Fell · Sep 17, 2010

In the WMI Code Creator select these options:

Namespace: root\WMI

Class: MSWmi_PnPInstanceNames

Select InstanceNames from the Results box for the following code:

using System;
using System.Management;
using System.Windows.Forms;

namespace WMISample
{
    public class MyWMIQuery
    {
        public static void Main()
        {
            try
            {
                ManagementObjectSearcher searcher = 
                    new ManagementObjectSearcher("root\\WMI", 
                    "SELECT * FROM MSWmi_PnPInstanceNames"); 

                foreach (ManagementObject queryObj in searcher.Get())
                {
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("MSWmi_PnPInstanceNames instance");
                    Console.WriteLine("-----------------------------------");
                    Console.WriteLine("InstanceName: {0}", queryObj["InstanceName"]);
                }
            }
            catch (ManagementException e)
            {
                MessageBox.Show("An error occurred while querying for WMI data: " + e.Message);
            }
        }
    }
}