我正在使用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;
}