2012. 3. 13. 14:57 윈도우/참고


MTP 디바이스가 연결 되면
mswmdm.h 에 정의된 구조체에서 상속 받아

// mswmdm.h 에 정의된 IWMDMNotification 구조체
    IWMDMNotification : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE WMDMMessage(
            /* [in] */ DWORD dwMessageType,
            /* [string][in] */ __RPC__in LPCWSTR pwszCanonicalName) = 0;
       
    };

// 메시지 핸들러 - 상속 받은 클래스의 오버라이드한 함수.
 HRESULT STDMETHODCALLTYPE WMDMMessage(DWORD  dwMessageType, LPCWSTR  pwszCanonicalName);

HRESULT CIWMDMNotification::WMDMMessage(DWORD  dwMessageType, LPCWSTR  pwszCanonicalName)
{
 switch(dwMessageType)
 {
 case WMDM_MSG_DEVICE_ARRIVAL:
  break;
 case WMDM_MSG_DEVICE_REMOVAL:
  break;
 case WMDM_MSG_MEDIA_ARRIVAL:
  break;
 case WMDM_MSG_MEDIA_REMOVAL:
  break;
 default:
  // TODO: Display a message indicating that an unidentified message has been received.
  break;
 }
 return S_OK; // Return value is ignored, and not returned to the application.
};

에서 구현 가능 하다.

참고
IWMDMNotification::WMDMMessage : http://msdn.microsoft.com/en-us/library/bb231849(v=vs.85).aspx
IWMDMNotification Interface : http://msdn.microsoft.com/en-us/library/bb231848(v=vs.85).aspx
IWMDeviceManager2::GetDeviceFromCanonicalName method  : http://msdn.microsoft.com/en-us/library/windows/desktop/ff801389(v=vs.85).aspx

posted by townone