ボリュームがWindows上でマウント解除されていることを検出できるようにしたいのですが(外付けUSB/FireWire/eSATAドライブ、ネットワーク共有フォルダ、ボリューム)。Windows上でマウントされていないボリュームを検出する
MSDNでRegisterDeviceNotification()
機能が見つかりました。この機能は、USBドライブの接続/切断を検出するのに一般的です。この機能は、あらゆる種類のボリューム、または外部の物理デバイスでも機能できますか? もしそうでなければ、それを行うために私が何を使うことができるか(ポーリング以外)はありますか?
最後の質問、私はWindows上でC++に新しいです、とRegisterDeviceNotification()
DOCは私の最初のパラメータは、私の場合はA handle to the window or service that will receive device events for the devices specified in the NotificationFilter parameter.
なければならないことを言って、私は私のプログラムのmain()
機能で通知を登録したかっただろう、と通知を処理するための何らかの種類のonNotificationReceived()
メソッドがあります。これを行うことができますか?そうであれば、どうしたらいいですか?別のプロセスで実行される別のウィンドウ/サービスを登録する必要がありますか?アンマウントドライブの一意のボリューム名を取得
これは私がやりたいように聞こえるので、これらのメッセージを受け取るには、自分のプログラムでコールバック関数を宣言するだけです。この関数の署名はどこで見つけることができますか?ありがとう! – nbarraille
@nbarraille:すべてのトップレベルウィンドウに 'WM_DEVICECHANGE'メッセージを送るべきです。だからあなたのWndProcでそれらを扱うか、あなたの好きなフレームワークがウィンドウメッセージを処理するためにあなたに与えるすべての場所。 –
私のプログラムは単なるコンソールプログラムであり、ウィンドウはありません。これらの通知を受け取るにはどうすれば登録できますか? – nbarraille