2016-07-07 77 views
0

我試圖監視USB SD卡讀取器插入/刪除,目標是觀察掛載的目錄。.Net WMI <Blah>更改事件以監視目錄

代碼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插/拔,但是當閱讀器插入不SD卡,事件觸發器,但掛載點無效。如果我將SDCard插入閱讀器,則不會觸發任何事件。
  2. Win32_VolumeChangeEvent:當裝入點是驅動器號(例如,F:\)時觸發事件。但是,如果安裝點是一個目錄(類似C:\usb_reader\)而不是驅動器號,則此事件不會觸發。

是否存在掛載點更改時觸發的事件? 例如,當某事安裝/卸載/從C:\usb_reader ...

回答

1

我不認爲你需要推倒重來,有人已經做過類似的項目:Here

用途到底是什麼你需要:

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

你可以檢查源代碼是否感興趣。