Windows API:检测驱动程序安装何时完成
题
我正在编写一些使用 Windows 自动连接蓝牙设备的软件 蓝牙API. 。连接后,Windows 按预期自动开始安装蓝牙 HID 设备驱动程序:
这大约需要 10-15 秒,之后 Windows 显示熟悉的“准备使用”消息:
问题是 BluetoothSetServiceState()
驱动安装后立即返回 开始, ,而不是当设备实际准备好使用时。这会给我的代码带来一些问题,因为一旦“连接”,它就会调用一个单独的库来进行设备通信。前几次调用失败是因为驱动程序尚未完成安装,并且进行这些连接尝试似乎会干扰驱动程序安装,因为如果我在驱动程序安装完成之前尝试使用通信库,Windows 会希望在设备可以重新启动之前重新启动使用。
我正在寻找的是一种在驱动程序安装实际完成时挂钩“准备使用”事件的方法,这样我就不会过早地调用通信库。是否有一些 Windows API 调用可以用来注册函数回调或直接轮询驱动程序安装的状态?
我是用普通的 C/C++ 编写的,而不是 .NET。感谢您的帮助!
其他提示
这里是什么我都会做的事:
- 下载 Winspector (或使用间谍++)
- 启动Winspector, 开始看窗口的消息
- 安装你的司机
- 看看窗口管理的指示完成程序安装
我希望我能更具描述性上#4,但我不熟悉的特定窗口的信息需要。 看看这里可能的窗口期待的消息.
然而,一旦你确定正确的消息窗口寻找,然后编程方式有你的程序等(和处理)这WM。 演示有优秀写了关于如何做到这C++.就个人而言, 我宁愿要这样做,在德尔斐.
如果是网络绑定,则 RNDIS 会在完成安装时发送一条消息 RNDIS驱动程序实施指南和定义 RNDIS
或者
您可以通过 Devcon 实用程序以编程方式安装或查询设备列表(源代码可通过 MSDN 获得),如下所示 例子
不隶属于 StackOverflow