RegisterDeviceNotificaiton,OndeviceChange被多次调用

时间:2014-02-03 14:56:02

标签: windows visual-c++ mfc

我正在使用RegisterDeviceNotification在添加设备时获取通知。 我正确收到通知,但是对于连接的任何设备,我多次接听OnDeviceChange(大约5-6次)。 这是代码:

     RegisterNotificaiton()
     {
        DEV_BROADCAST_DEVICEINTERFACE *pDev;
    pDev = new DEV_BROADCAST_DEVICEINTERFACE();
    if(NULL != pDev)
    {
    memset( pDev, 0, sizeof(DEV_BROADCAST_DEVICEINTERFACE) );
    pDev->dbcc_size = sizeof(DEV_BROADCAST_DEVICEINTERFACE);
    pDev->dbcc_devicetype = DBT_DEVTYP_DEVICEINTERFACE;

    pDev->dbcc_classguid = GUID_USB;
    m_hNotifyDevNode = RegisterDeviceNotification( this->GetSafeHwnd(), pDev,                                       DEVICE_NOTIFY_WINDOW_HANDLE | 4);
    if(NULL != pDev)
    {
        delete pDev;
        pDev = NULL;
    }
   }
    }

    BOOL CMainFrame::OnDeviceChange(UINT wParam, DWORD_PTR lParam)
    {
 switch ( wParam )
      {
    case DBT_DEVICEARRIVAL:
    {
       ; // Do something 
    }
    break;
    case DBT_DEVICEREMOVECOMPLETE:
    {
                ; // Do something
    }
           default:
               break;
          }
return true;

     }

0 个答案:

没有答案