2017-11-03 18 views
0

USB 직렬 장치 용 C# 클래스 라이브러리를 개발 중입니다. USB가 언제 제거되는지 알고 싶습니다.Windows XP에서 C# USB 제거 이벤트

현재 USB를 제거 할 때 알림을 받으려고 WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 3")을 사용하고 있습니다. 따라서 플러그가 뽑혀진 후에 포트를 분리 할 수 ​​있습니다.

Windows 7, Windows 8 및 Windows 10에서는 정상적으로 작동합니다. 그러나 Windows XP SP3에서는 USB를 제거하면 이벤트가 트리거되지 않습니다. (비고 : 내 Windows XP는 .NET 3.5 및 .NET 3.5 SP1과 함께 설치됨)

Windows XP에서 USB를 제거 할 때 알림을받을 수있는 방법이 있습니까?

답변

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(); 

설명 : 폴링 간격을 지정하려면 [간격]을 바꾸십시오. 자세한 정보를 얻으려면 HERE을 입력하십시오.