시스템에서 드라이브 추가 혹은 제거되었을 때를 자동으로 감시하는 코드

출처 : 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;
}

Related Posts

답글 남기기

이메일 주소는 공개되지 않습니다.