我试图监视USB卡读卡器插入/删除,目的是观察挂载目录。
代码片段如下所示,主要区别是查询:
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插入读取器时,事件会触发,但是挂载点无效。如果然后向读取器插入一个SDCard,则不会触发任何事件。Win32_VolumeChangeEvent:当挂载点是驱动器号(例如,F:\)时,事件触发。但是,如果挂载点是目录(类似于C:\usb_reader\),而不是驱动器号,则此事件不会触发。当挂载点改变时,是否有触发的事件?例如,当某物被挂载/卸载到/从C:\usb_reader.
发布于 2016-07-07 14:44:48
我不认为你需要重新发明轮子,有人已经做过类似的项目:这里
使用正是您所需要的:
{
DriveDetector driveDetector = new DriveDetector();
driveDetector.DeviceArrived += new DriveDetectorEventHandler(OnDriveArrived);
driveDetector.DeviceRemoved += new DriveDetectorEventHandler( OnDriveRemoved);
driveDetector.QueryRemove += new DriveDetectorEventHandler(OnQueryRemove);
}如果有兴趣,可以检查源代码。
https://stackoverflow.com/questions/38248271
复制相似问题