2

FileSystemWatcher を使用して特定のディレクトリの変更を監視する .NET 2.0 フレームワークを使用して C# で記述された Windows サービスがあります。これらのディレクトリの一部は、USB ドライブなどのリムーバブル メディア上にある場合があります。新しいドライブがシステムに接続されると、WMI クエリを介して通知を受け取り、新しい FileSystemWatcher をセットアップできます。すべてがうまく機能します。

問題は、ユーザーが Windows の「ハードウェアの安全な取り外し」アプリを使用してドライブを取り出せるようにしたいのですが、FileSystemWatcher を介してドライブを監視しているため、Windows はドライブがビジーであると報告し、ユーザーにドライブを取り出せないことを伝えます。削除されました。

私の質問は、ファイル システム モニターを削除して要求を成功させるために、ユーザーがいつイジェクトを要求したかを Windows サービスがどのように知ることができるかということです。

4

1 に答える 1

2

こちら で説明されているように、RegisterDeviceNotification Windows API を介して、デバイス削除クエリ ブロードキャスト イベント (DBT_DEVICEQUERYREMOVE) を受信するように登録する必要があります。

私の知る限り、この機能をラップする .NET Framework クラスは存在しないため、p/Invoke を使用して手動で行う必要があります。

于 2011-01-24T16:28:27.613 に答える