.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");
- 带
Win32_DeviceChangeEvent
:我可以监控USB插头/拔出,但是当没有SDCard插入读卡器时,事件会触发,但挂载点无效。如果我随后向读取器插入 SD卡,则不会触发任何事件。 - with
Win32_VolumeChangeEvent
:当装入点是驱动器号(例如,F:'
)时触发的事件。但是,如果装入点是目录(类似于C:'usb_reader'
)而不是驱动器号,则不会触发此事件。
挂载点更改时是否触发事件?例如,当某些东西被装载/卸载到/从C:'usb_reader
...
我认为你不需要重新发明轮子,有人已经做了类似的项目:
这里用法正是您所需要的:
{
DriveDetector driveDetector = new DriveDetector();
driveDetector.DeviceArrived += new DriveDetectorEventHandler(OnDriveArrived);
driveDetector.DeviceRemoved += new DriveDetectorEventHandler( OnDriveRemoved);
driveDetector.QueryRemove += new DriveDetectorEventHandler(OnQueryRemove);
}
如果有兴趣,可以检查源代码。