2017-11-03 22 views
0

USBシリアルデバイス用のC#クラスライブラリを開発中です。 USBがいつ削除されるのかを知るためのイベントが必要です。Windows XPでC#USBを削除するイベント

現在、私はWqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 3")を使用して、USBが取り外されたときに通知を受けて、プラグが抜かれた後でポートを切断できるようにしています。

これは、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を得ることができた、ポーリング間隔を指定するには、[間隔]を交換してください。

関連する問題