C # detectar dispositivo usb ClassCode (tipo de dispositivo usb)

Necesito saber qué tipo de dispositivos USB se utilizan actualmente en el sistema. Hay unEspecificación de USB sobre los códigos de clase de los dispositivos USB. Pero no puedo obtener el tipo de dispositivo, solicitud WMIWQL: select * from Win32_UsbHub proporcione valores nulos en el código de clase, código de subclase, campos de tipo de protocolo. ¿Alguna idea de cómo detectar el tipo de dispositivo USB actualmente en uso?

Mi código actual:

ManagementObjectCollection collection; 
using (var searcher = new ManagementObjectSearcher(@"Select * From Win32_USBHub")) 
{
    collection = searcher.Get();
    foreach (var device in collection)
        {
            var deviceId = (string)GetPropertyValue("DeviceID");
            var pnpDeviceId = (string)GetPropertyValue("PNPDeviceID");
            var descr = (string)device.GetPropertyValue("Description");
            var classCode = device.GetPropertyValue("ClassCode"); //null here
        }
}

Respuestas a la pregunta(1)

Su respuesta a la pregunta