본문 바로가기

Language/MFC

이동식/HD/SD 카드등 외부 메모리 삽입/제거 이벤트 감지

USB/SD 카드 가 컴퓨터에서 인식되면 이게 이동식이든 HD 든 상관없이 시스템 콜을 받게 됩니다. 
MFC 에서 DefWindowProc() 함수에서 메시지가 날라오는군요.

DefWindowProc 함수는 MFC 메시지 함수 입니다.

#include <dbt.h>
LRESULT CMyProject::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
                 // TODO: 여기에 특수화된 코드를 추가 및/또는 기본 클래스를 호출합니다.
                 if(message == WM_DEVICECHANGE){
                                UINT event = (UINT)wParam;
                                 switch(event ){
                                 case DBT_DEVICEARRIVAL :// 이동식 디스크 삽입
                                                SetDlgItemText(IDC_STATIC_MSG, "USB 삽입 감지...!!" );
                                                 break;
                                 case DBT_DEVICEREMOVECOMPLETE :// 이동식 디스크 추출
                                                SetDlgItemText(IDC_STATIC_MSG, "USB 제거 감지...!!" );
                                                 break;
                                }
                }
                 return CDialogEx::DefWindowProc(message, wParam, lParam);
}

이동식 외에도 HD 나 SD 카드등 분기를 하기 위해서 여러 플레그가 정의 되어 있네요. 

Reference site
외부 디스크 감지 플레그 http://jmgame.egloos.com/viewer/2208907