braintag

公開してしまう備忘録

USBリムーバブルメディア(USBメモリ、USBカードリーダー経由のCFメディア)の挿抜イベントを検出

USBメモリ、カードリーダー経由のCF挿抜の検出方法

まずはUSBメモリの場合

WM_DEVICECHANGEで検出する。
(MFCならOnDeviceChangeで検出)
その中のパラメタ、EventType
DBT_DEVICEARRIVALだったら挿入
DBT_DEVICEREMOVECOMPLETEは抜かれた


次に、USBカードリーダーに刺さるメモリ関連。これは上のメッセージでは検出が出来ない。
全部書くの面倒なので省略する。これらをググってください。
SHGetSpecialFolderLocationにてSHCNE_DISKEVENTSSHCNE_MEDIAINSERTED|SHCNE_MEDIAREMOVED
そして返されるメッセージを登録

そしたらCFを抜き差しするたびにそのメッセージが返される。
lParamがSHCNE_MEDIAINSERTEDなら挿入
SHCNE_MEDIAREMOVEDなら抜かれた

これで完璧かと思われる。