C++ 断开/连接设备时,WM_设备更改两次
我正在我的消息循环中收听WM_DEVICECHANGE,当我移除或插入我的网络摄像头时,WM_DEVICECHANGE出现两次,带有相同的消息(使用相同的HWND、UINT、WPARAM和LPARAM)。如何修复它 这是意料之中的。虽然wParam和lParam应该不同,以指示设备状态更改的不同阶段,但知道存在重复消息并不奇怪 如果我没记错的话,我们在代码中所做的是,当我们收到WM_DEVICECHANGE事件时,我们执行以下任一操作:C++ 断开/连接设备时,WM_设备更改两次,c++,winapi,C++,Winapi,我正在我的消息循环中收听WM_DEVICECHANGE,当我移除或插入我的网络摄像头时,WM_DEVICECHANGE出现两次,带有相同的消息(使用相同的HWND、UINT、WPARAM和LPARAM)。如何修复它 这是意料之中的。虽然wParam和lParam应该不同,以指示设备状态更改的不同阶段,但知道存在重复消息并不奇怪 如果我没记错的话,我们在代码中所做的是,当我们收到WM_DEVICECHANGE事件时,我们执行以下任一操作: 第一个通知到达后,在接下来的几秒钟内忽略所有后续通知 或者
这是意料之中的。虽然wParam和lParam应该不同,以指示设备状态更改的不同阶段,但知道存在重复消息并不奇怪 如果我没记错的话,我们在代码中所做的是,当我们收到WM_DEVICECHANGE事件时,我们执行以下任一操作:
被复制的实际
wParam
值是多少?该值告诉您如何解释lParam
值,该值将是指向特定于事件的结构的指针,其中包含有关更改的更详细信息。您是否正在查看该细节?复制的实际wParam
值是多少?该值告诉您如何解释lParam
值,该值将是指向特定于事件的结构的指针,其中包含有关更改的更详细信息。你有没有看到这些细节?很好的建议,但是为什么会出现多条消息呢?可能是因为一个USB设备在技术上是多个设备的组合。例如,网络摄像头既是USB摄像头又是USB麦克风。您可能会认为,即使该设备是多个设备的组合,您仍然能够通过windows api以某种方式区分它们。如果您不介意看一下我的问题,这是一个类似的问题,我试图限制这些到达/移除,以便更快地设置设备通信。然而,我的问题是,在这些多次到达/删除停止之前,我的设备似乎无法读取数据。这样已经很久了。他们在短期内修复的可能性为零。值得一提的是,前几天我不得不处理一个类似的问题,关于WM\u setingchange
。更改您的Windows颜色,您的窗口将收到该消息5-10次。很好的建议,但为什么需要多条消息?可能是因为USB设备在技术上是多个设备的组合。例如,网络摄像头既是USB摄像头又是USB麦克风。您可能会认为,即使该设备是多个设备的组合,您仍然能够通过windows api以某种方式区分它们。如果您不介意看一下我的问题,这是一个类似的问题,我试图限制这些到达/移除,以便更快地设置设备通信。然而,我的问题是,在这些多次到达/删除停止之前,我的设备似乎无法读取数据。这样已经很久了。他们在短期内修复的可能性为零。值得一提的是,前几天我不得不处理一个类似的问题,关于WM\u setingchange
。更改您的窗口颜色,您的窗口将收到该消息5-10次。