2011-01-24 36 views
2

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

難しいのは、Windowsの「Safely Remove Hardware」アプリケーションを使用してユーザーがドライブを取り出せるようにすることですが、WindowsはFileSystemWatcher経由でドライブを監視しているためにドライブがビジー状態であると報告し、ドライブを取り外すことはできません。

私の質問は、ユーザーが取り出しを要求したときにWindowsサービスがどのようにしてファイルシステムモニタを削除し、要求を成功させることができるのですか?

答えて

2

hereのように、RegisterDeviceNotification Windows APIを使用してデバイス削除クエリブロードキャストイベント(DBT_DEVICEQUERYREMOVE)を受信するには、登録する必要があります。

私が知る限り、この機能をラップする.NET Frameworkクラスはありません。したがって、p/Invokeを使用して長時間行う必要があります。

+0

DBT_DEVICEQUERYREMOVEとその記事の内容は、私が必要とするものとまったく同じように見えます。私はまもなくそれを試みます。ありがとう! –

関連する問題