我正在为USB-Serial设备开发一个C#类库。我需要一个事件才能知道何时移除USB。
目前我正在使用WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 3")
在移除USB时收到通知,以便我可以在拔下插头后断开端口。
这在Windows 7,Windows 8和Windows 10中运行良好。 但在Windows XP SP3中,移除USB时不会触发事件。 (备注:我的Windows XP随.NET 3.5和.NET 3.5 SP1一起安装)
有什么方法可以在Windows XP中删除USB时收到通知吗?
答案 0 :(得分:0)
我找到了解决方案!
string query = "SELECT * FROM __InstanceDeletionEvent WITHIN [interval] WHERE TargetInstance ISA 'Win32_USBHub'";
var watcher = new ManagementEventWatcher(query);
watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
watcher.Start();
备注:将[interval]替换为指定轮询间隔,您可以获取更多信息HERE。