C#でリムーバブルメディアの着脱を検知する方法 その2

その1ではリムーバブルメディアの着脱を検知する方法を説明した。この方法はUSBメモリなどではうまく機能するが、多数のメディアの読み書きに対応したメディアリーダ(例: google:image:USB メディア リーダー)では問題が起こるかもしれない。

例えば、私が使っているBuffaloのメディアリーダでは、リーダーをUSBポートに接続した時点で6つぐらいのドライブが認識される。同時にWindowメッセージ(WM_DEVICECHANGE)もドライブの数だけ飛ぶ。そして、実際にSDカードなどのメディアをメディアリーダーにセットした時には、何も検知できない。そういう場合にどうするかというのがここで説明する内容である。

続きを読む

RemovableStorageMonitor.csの話

RemovableStorageMonitor.csは、その1とその2で書いた方法を両方実装し、両者の差を気にせず扱えるようにしたものである。また、メディアの着脱を検知した時にイベントを発生させるように実装してある。RemovableStorageMonitorクラスのユーザーは、リムーバブルストレージの着脱を検知した時に行いたい処理をイベントハンドラとして実装し、登録すれば良い。