USB장치 연결 및 해제 Programming

[퍼옴]USB 장치가 연결되거나 해제 됐을 때는 이벤트를 처리하는 방법

 

 

1. 메시지 맵 등록

    

메시지 맵에 이벤트를 함수와 연결 시킨다.

 

// example

 

    BEGIN_MESSAGE_MAP(CDlg, CDialog)

            ON_MESSAGE(WM_DEVICECHANGE, fnDeviceChange)

    END_MESSAGE_MAP()

 

2. 이벤트를 받을 장치를 등록한다.

    

    장치 등록은 RegisterForDeviceNotifications()함수를 이용한다

 

//example

    void CDlg::RegisterForDeviceNotifications()

    {

        DEV_BROADCAST_DEVICEINTERFACE DevBroadcastDeviceInterface;

        HDEVNOTIFY DeviceNotificationHandle;

 

        DevBroadcastDeviceInterface.dbcc_size = sizeof(DevBroadcastDeviceInterface);

        DevBroadcastDeviceInterface.dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;

        DevBroadcastDeviceInterface.dbcc_classguid = DeviceGuid;              //해당 장치의 GUID

 

        DeviceNotificationHandle =

            RegisterDeviceNotification(m_hWnd, &DevBroadcastDeviceInterface, DEVICE_NOTIFY_WINDOW_HANDLE);

    }

    

3. 처리함수 구현

 

처리함수는 WM_DEVICECHANGE에서 넘어오는 파라메터를 이용해서 한다

 

자세한 파라메터 정보는 MSDN을 참조하시기 바랍니다.

 

void CDlg::fnDeviceChange(WPARAM wParam, LPARAM lParam)

{

    switch(wParam)

    {

        case DBT_DEVICEARRIVAL:

            //장치 연결 됬을 때 처리

            break;

 

        case DBT_DEVICEREMOVECOMPLETE:

            //장치 연결 해제 됬을 때 처리

            break;

 

        default:

            break;

    }

}

 

 

참조

 

MSDN

USB Complete(Jan Axelson)


1 2 3 4 5 6 7 8 9 10 다음