시스템에서 드라이브 추가 혹은 제거되었을 때를 자동으로 감시하는 코드 DarkKaiser, 2007년 6월 20일2023년 9월 4일 출처 : http://www.codeproject.com/useritems/Drive_Detect.asp 시스템에서 플로피/하드/CD-ROM/이동 드라이브가 추가 혹은 제거되었을 때를 자동으로 감시하는 코드입니다. 우선 헤더 파일을 프로젝트에 추가하여 줍니다. #include <dbt.h> 아래의 메시지 핸들러를 추가합니다. 클래스 위저드를 통해서 추가할 수 없으니 수동으로 추가하여 주세요. bool inline IsBitSet (DWORD64 dwMask, UINT nTHBit) { DWORD64 dwBit = 1; dwBit <<= nTHBit; dwMask &= dwBit; return dwMask ? true : false; } BOOL CT1Dlg::OnDeviceChange( UINT nEventType, DWORD dwData ) { BOOL bReturn = CWnd::OnDeviceChange (nEventType, dwData); DEV_BROADCAST_VOLUME *volume = (DEV_BROADCAST_VOLUME *)dwData; CString log; if (nEventType == DBT_DEVICEARRIVAL) { if (volume->dbcv_devicetype == DBT_DEVTYP_VOLUME) { for (int n = 0; n < 32; n++) { if (IsBitSet (volume->dbcv_unitmask, n)) { log.Format ("Drive %c: Inserted\n", n + 'A'); AfxMessageBox(log); } } } } if (nEventType == DBT_DEVICEREMOVECOMPLETE) { if (volume->dbcv_devicetype == DBT_DEVTYP_VOLUME) { for (int n = 0; n < 32; n++) { if (IsBitSet (volume->dbcv_unitmask, n)) { log.Format ("Drive %c: Removed\n", n + 'A'); AfxMessageBox(log); } } } } return bReturn; } C/C++/VC++ C++VC드라이브