.Net WMI ChangeEvent 来监视目录

本文关键字:监视 ChangeEvent WMI Blah Net | 更新日期: 2023-09-27 17:55:51

我正在尝试监视USB SD卡读卡器的插入/取出,目标是监视挂载的目录。

Code Sniplet 看起来像这样,主要区别在于查询:

mWatcher = new ManagementEventWatcher();
mWatcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);
mWatcher.Query = new WqlEventQuery("SELECT * FROM Win32_VolumeChangeEvent WHERE EventType = 2 OR EventType = 3");
  1. Win32_DeviceChangeEvent:我可以监控USB插头/拔出,但是当没有SDCard插入读卡器时,事件会触发,但挂载点无效。如果我随后向读取器插入 SD卡,则不会触发任何事件。
  2. with Win32_VolumeChangeEvent :当装入点是驱动器号(例如,F:')时触发的事件。但是,如果装入点是目录(类似于 C:'usb_reader' )而不是驱动器号,则不会触发此事件。

挂载点更改时是否触发事件?例如,当某些东西被装载/卸载到/从C:'usb_reader...

.Net WMI <Blah>ChangeEvent 来监视目录

我认为你不需要重新发明轮子,有人已经做了类似的项目:

这里

用法正是您所需要的:

{
     DriveDetector driveDetector = new DriveDetector();
     driveDetector.DeviceArrived += new DriveDetectorEventHandler(OnDriveArrived);
     driveDetector.DeviceRemoved += new DriveDetectorEventHandler( OnDriveRemoved);
     driveDetector.QueryRemove += new DriveDetectorEventHandler(OnQueryRemove);
}

如果有兴趣,可以检查源代码。