Windows XP中的C#USB删除事件

时间:2017-11-03 07:29:52

标签: c# .net usb windows-xp

我正在为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时收到通知吗?

1 个答案:

答案 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