为什么一个BLE HID设备有多个DBT_DEVICEREMOVECOMPLETE消息?

时间:2019-06-18 19:17:18

标签: windows bluetooth-lowenergy wndproc

当通过WM_DEVICECHANGE查找BLE HID设备的WndProc消息时,到达和删除消息有时会出现1-4次,而没有任何实际的删除或关闭设备的操作。到达后,我建立了通信,而移走后,我结束了通信。但是,我想看看如果我忽略随后的删除消息并继续通过ReadFile从设备读取信息,是否仍然可以进行通信。

我发现,如果再收到一条移除消息,我将读取失败。基本上,发生的事情是它经历了到达和移除顺序,直到设备似乎已正确设置,然后在最后到达消息中设备通信已建立。届时通信将不会中断,并且可以正确读取数据。

我对通过USB HID发出的此类消息没有问题。我不确定这是否是我正在使用的设备的低级问题,可以解决。如果设备可以在第一次尝试时重新连接,则可以节省时间,而无需等待2-4次到达/移除。

如果这是BLE HID设备的常见情​​况,我将采取任何答案来解释为什么会多次到达和移除。

另外一点信息是,我看到这也在使用.NET包装器作为C ++代码的C#应用​​程序中发生。在SimpleHIDWrite https://github.com/Robmaister/SimplerHidWrite中,该应用程序还会多次获取BLE设备的设备到达和删除信息。我的应用程序设备事件系统和SimpleHIDWrite之间的唯一区别是我使用的是本机代码。因此,问题可能与代码无关,而与设备有关。

0 个答案:

没有答案