ホームページ >バックエンド開発 >C++ >C# Windows サービスはどのようにして USB ドライブの挿入と取り外しを検出できますか?

C# Windows サービスはどのようにして USB ドライブの挿入と取り外しを検出できますか?

Susan Sarandon
Susan Sarandonオリジナル
2025-01-14 07:46:42449ブラウズ

How Can a C# Windows Service Detect USB Drive Insertion and Removal?

USB ドライブ検出用のレスポンシブ C# Windows サービスの構築

多くの分散アプリケーションは、USB ドライブの挿入と取り外しに反応する必要があります。この記事では、これを確実に実現する C# Windows サービスを作成する方法を説明します。 Windows Management Instrumentation (WMI) API を活用し、サービスには適さない WndProc などの方法と比較して、優れた信頼性と互換性を提供します。

次のコード スニペットは、基本的な WMI ベースの実装を提供します。

<code class="language-csharp">using System.Management;

// Create a ManagementEventWatcher to monitor for volume change events.
ManagementEventWatcher watcher = new ManagementEventWatcher();

// Define a WQL query to filter for volume insertion events (EventType = 2).
WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_VolumeChangeEvent WHERE EventType = 2");

// Attach an event handler to process detected events.
watcher.EventArrived += new EventArrivedEventHandler(watcher_EventArrived);

// Assign the query to the watcher.
watcher.Query = query;

// Start monitoring.
watcher.Start();

// Wait for the next event.  Consider using a more robust loop for continuous monitoring.
watcher.WaitForNextEvent();</code>

このコードは、Win32_VolumeChangeEvent イベントをリッスンするウォッチャーを確立します。EventType は 2 (メディア挿入を示します)。

イベントの処理と応答

watcher_EventArrived イベント ハンドラー (図示せず) には、ドライブの挿入に応答するロジックが含まれます。これには、分散アプリケーションの起動やその他の必要なアクションの実行が含まれる場合があります。

堅牢性とエラー処理

包括的なエラー処理と例外管理を実装することは、予期しないエラーが発生した場合でもサービスの継続的な動作を保証するために重要です。 これは watcher_EventArrived メソッドに組み込む必要があります。

機能の拡張

この基本的な例は、さまざまなシナリオに合わせてカスタマイズできます。 イベント処理を変更したり、さまざまなメディア タイプに複数のウォッチャーを作成したり、ドライブの削除 (EventType = 3) のイベント処理を追加したりできます。

WMI により、Windows サービスが USB ドライブのイベントに動的に反応できるようになり、その結果、応答性が高く適応性の高い分散アプリケーションが実現します。

以上がC# Windows サービスはどのようにして USB ドライブの挿入と取り外しを検出できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。