断开/连接设备时,WM_DEVICECHANGE会出现两次

时间:2017-05-25 15:02:09

标签: c++ winapi

我正在收听WM_DEVICECHANGE的消息循环,当我移除或推动我的网络摄像头时,WM_DEVICECHANGE会出现两次,具有相同的MSG(具有相同的HWND,UINT,WPARAM和LPARAM)。怎么解决?

1 个答案:

答案 0 :(得分:2)

这是可以预料的。虽然wParam和lParam 应该不同以指示设备状态更改的不同阶段,但我知道存在重复消息并不会让我感到惊讶。

如果我没记错的话,我们在代码中所做的是,当我们收到WM_DEVICECHANGE事件时,请执行以下任何操作:

  1. 第一个进入后,请忽略接下来几秒内的所有后续通知。

  2. 或者只是使用WM_DEVICECHANGE作为提示,而不是事实。当我们收到这样的消息时,我们将使用适当的API重新枚举设备列表,并查看自上次枚举以来是否有任何更改。如果新列表与原始列表相同,则无需执行任何操作。

相关问题