포트가 생성되거나 제거될때 감지한다.
모든 COM 포트는 생성/제거될 때 윈도우에 BROADCAST방식으로 모든 윈도우에 WM_DEVICECHANGE이벤트를 발생한다.
(드라이버가 자동으로 발생시켜 주는 것이 아니라 해당 드라이버에서 Load/Unload될때 IoSetDeviceInterfaceState함수를 통해 발생시켜 주어야 한다)
Load/Unload시 메시지 발생 절차
장치연결 - 해당 드라이버 SYS파일 로드 - 드라이버내의 IoSetDeviceInterfaceState실행 - 모든 윈도우에 WM_DEVICECHANGE발생-COM 포트 감지
//DBT계열의 상태 정의 값들은 dbt.h 헤더에 정의되어 있으므로 반드시 추가한다.
#include "Dbt.h" // WM_DEVICECHANGE
LRESULT CformTestDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if( message == WM_DEVICECHANGE )
{
UINT event = (UINT)wParam;
switch(event)
{
case DBT_DEVICEARRIVAL:
AfxMessageBox("USB장치연결");
break;
case DBT_DEVICEREMOVECOMPLETE:
AfxMessageBox("장치제거");
break;
}
}
return CDialog::DefWindowProc(message, wParam, lParam);
}
댓글 영역