我正在编写一些使用 Windows蓝牙 API自动连接蓝牙设备的软件。当它连接时,Windows 会自动开始安装蓝牙 HID 设备驱动程序,如预期的那样:
这大约需要 10-15 秒,之后 Windows 会显示熟悉的“准备使用”消息:
问题是BluetoothSetServiceState()
驱动程序安装开始后立即返回,而不是在设备实际准备好使用时返回。这会给我的代码带来一些问题,因为它在“连接”后立即调用一个单独的库进行设备通信。前几个调用失败是因为驱动程序尚未完成安装,并且进行这些连接尝试似乎会干扰驱动程序安装,因为如果我在驱动程序安装完成之前尝试使用通信库 Windows 想要在设备可以之前重新启动使用。
我正在寻找的是一种在驱动程序安装实际完成时挂钩“准备使用”事件的方法,因此我不会过早地调用我的通信库。是否有一些 Windows API 调用可用于注册函数回调或直接轮询驱动程序安装的状态?
我正在用普通的 C/C++ 编写这个,而不是 .NET。谢谢你的帮助!