WMI:插入时获取USB设备描述

如何在插入USB设备时获取设备ID和其他说明? 我找到了一个如何获得USB设备插入/删除通知的示例。 但是如何获取设备desrtiption信息?

这是我的代码片段:

WqlEventQuery q; ManagementScope scope = new ManagementScope("root\\CIMV2"); scope.Options.EnablePrivileges = true; try { q = new WqlEventQuery(); q.EventClassName = "__InstanceDeletionEvent"; q.WithinInterval = new TimeSpan(0, 0, 3); q.Condition = @"TargetInstance ISA 'Win32_USBControllerdevice'"; w = new ManagementEventWatcher(scope, q); w.EventArrived += new EventArrivedEventHandler(USBRemoved); w.Start(); } ... catch().... 

更新:实际上,它是一个带USB连接的串行COM设备。 所以没有driveName属性。 如何获取USB描述,我可以在设备管理器中看到? WMI是否提供有关USB插入的通知的此信息?

根据您更新的答案完成新答案。 您可以检查任何连接的USB设备

  ManagementScope sc = new ManagementScope(@"\\YOURCOMPUTERNAME\root\cimv2"); ObjectQuery query = new ObjectQuery("Select * from Win32_USBHub"); ManagementObjectSearcher searcher = new ManagementObjectSearcher(sc, query); ManagementObjectCollection result = searcher.Get(); foreach (ManagementObject obj in result) { if (obj["Description"] != null) Console.WriteLine("Description:\t" + obj["Description"].ToString()); if (obj["DeviceID"] != null) Console.WriteLine("DeviceID:\t" + obj["DeviceID"].ToString()); if (obj["PNPDeviceID"] != null) Console.WriteLine("PNPDeviceID:\t" + obj["PNPDeviceID"].ToString()); } 

(请参阅MSDN WMI任务示例 )

或者查看任何COM ConnectedDevice

  ManagementScope sc = new ManagementScope(@"\\YOURCOMPUTERNAME\root\cimv2"); ObjectQuery query = new ObjectQuery("Select * from Win32_SerialPort"); searcher = new ManagementObjectSearcher(sc, query); result = searcher.Get(); foreach (ManagementObject obj in result) { if (obj["Caption"] != null) Console.WriteLine("Caption:\t" + obj["Description"].ToString()); if (obj["Description"] != null) Console.WriteLine("Description:\t" + obj["DeviceID"].ToString()); if (obj["DeviceID"] != null) Console.WriteLine("DeviceID:\t" + obj["PNPDeviceID"].ToString()); } 

(有关详细信息,请参阅ActiveX专家 )