C++ Windows API:检测驱动程序安装何时完成
我正在编写一些软件,可以使用Windows自动连接蓝牙设备。连接时,Windows会自动开始安装蓝牙HID设备驱动程序,如预期的那样: 这大约需要10-15秒,之后Windows将显示familar“ready for use”(准备使用)消息: 问题在于,C++ Windows API:检测驱动程序安装何时完成,c++,windows,bluetooth,driver,C++,Windows,Bluetooth,Driver,我正在编写一些软件,可以使用Windows自动连接蓝牙设备。连接时,Windows会自动开始安装蓝牙HID设备驱动程序,如预期的那样: 这大约需要10-15秒,之后Windows将显示familar“ready for use”(准备使用)消息: 问题在于,BluetoothSetServiceState()在驱动程序安装开始时返回,而不是在设备实际准备好使用时返回。这会给我的代码带来一些问题,因为它一“连接”就调用一个单独的库进行设备通信。前几个调用失败是因为驱动程序尚未完成安装,而进行这
BluetoothSetServiceState()
在驱动程序安装开始时返回,而不是在设备实际准备好使用时返回。这会给我的代码带来一些问题,因为它一“连接”就调用一个单独的库进行设备通信。前几个调用失败是因为驱动程序尚未完成安装,而进行这些连接尝试似乎会干扰驱动程序的安装,因为如果在驱动程序安装完成之前尝试使用通信库,Windows希望在设备可以使用之前重新启动
我正在寻找的是一种在驱动程序安装实际完成时钩住“准备使用”事件的方法,这样我就不会过早地调用通信库。是否有一些Windows API调用可用于注册函数回调或直接轮询驱动程序安装状态
我是用香草C/C++写的,不是.NET。谢谢你的帮助 如果是网络绑定,则RNDIS在按照完成安装时发送消息 和定义 或
您可以通过Devcon实用程序(源代码可从MSDN获得)以编程方式安装或查询设备列表,如所示
但是,一旦确定了要查找的正确窗口消息,就可以通过编程方式让程序等待(并处理)此WM。就个人而言,.你可能想看看
和功能。我不确定是否100%,但如果您为设备类指定正确的guid,它似乎会起作用。您是否尝试了WM_DEVICECHANGE和/或RegisterDeviceNotification?