상세 컨텐츠

본문 제목

WM_DEVICECHANGE

청강컴정/MFC

by luckey 2009. 6. 25. 19:10

본문

포트가 생성되거나 제거될때 감지한다.

모든 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);
}

관련글 더보기

댓글 영역