Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/132.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 断开/连接设备时,WM_设备更改两次_C++_Winapi - Fatal编程技术网

C++ 断开/连接设备时,WM_设备更改两次

C++ 断开/连接设备时,WM_设备更改两次,c++,winapi,C++,Winapi,我正在我的消息循环中收听WM_DEVICECHANGE,当我移除或插入我的网络摄像头时,WM_DEVICECHANGE出现两次,带有相同的消息(使用相同的HWND、UINT、WPARAM和LPARAM)。如何修复它 这是意料之中的。虽然wParam和lParam应该不同,以指示设备状态更改的不同阶段,但知道存在重复消息并不奇怪 如果我没记错的话,我们在代码中所做的是,当我们收到WM_DEVICECHANGE事件时,我们执行以下任一操作: 第一个通知到达后,在接下来的几秒钟内忽略所有后续通知 或者

我正在我的消息循环中收听WM_DEVICECHANGE,当我移除或插入我的网络摄像头时,WM_DEVICECHANGE出现两次,带有相同的消息(使用相同的HWND、UINT、WPARAM和LPARAM)。如何修复它

这是意料之中的。虽然wParam和lParam应该不同,以指示设备状态更改的不同阶段,但知道存在重复消息并不奇怪

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

  • 第一个通知到达后,在接下来的几秒钟内忽略所有后续通知

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


  • 这是意料之中的。虽然wParam和lParam应该不同,以指示设备状态更改的不同阶段,但知道存在重复消息并不奇怪

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

  • 第一个通知到达后,在接下来的几秒钟内忽略所有后续通知

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


  • 被复制的实际
    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次。