当通过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之间的唯一区别是我使用的是本机代码。因此,问题可能与代码无关,而与设备有关。