Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ Windows API:检测驱动程序安装何时完成_C++_Windows_Bluetooth_Driver - Fatal编程技术网

C++ Windows API:检测驱动程序安装何时完成

C++ Windows API:检测驱动程序安装何时完成,c++,windows,bluetooth,driver,C++,Windows,Bluetooth,Driver,我正在编写一些软件,可以使用Windows自动连接蓝牙设备。连接时,Windows会自动开始安装蓝牙HID设备驱动程序,如预期的那样: 这大约需要10-15秒,之后Windows将显示familar“ready for use”(准备使用)消息: 问题在于,BluetoothSetServiceState()在驱动程序安装开始时返回,而不是在设备实际准备好使用时返回。这会给我的代码带来一些问题,因为它一“连接”就调用一个单独的库进行设备通信。前几个调用失败是因为驱动程序尚未完成安装,而进行这

我正在编写一些软件,可以使用Windows自动连接蓝牙设备。连接时,Windows会自动开始安装蓝牙HID设备驱动程序,如预期的那样:

这大约需要10-15秒,之后Windows将显示familar“ready for use”(准备使用)消息:

问题在于,
BluetoothSetServiceState()
在驱动程序安装开始时返回,而不是在设备实际准备好使用时返回。这会给我的代码带来一些问题,因为它一“连接”就调用一个单独的库进行设备通信。前几个调用失败是因为驱动程序尚未完成安装,而进行这些连接尝试似乎会干扰驱动程序的安装,因为如果在驱动程序安装完成之前尝试使用通信库,Windows希望在设备可以使用之前重新启动

我正在寻找的是一种在驱动程序安装实际完成时钩住“准备使用”事件的方法,这样我就不会过早地调用通信库。是否有一些Windows API调用可用于注册函数回调或直接轮询驱动程序安装状态


我是用香草C/C++写的,不是.NET。谢谢你的帮助

如果是网络绑定,则RNDIS在按照完成安装时发送消息 和定义


您可以通过Devcon实用程序(源代码可从MSDN获得)以编程方式安装或查询设备列表,如所示

  • 下载(或使用Spy++)
  • 启动Winspector,然后
  • 安装你的驱动程序
  • 注意WM指示已完成的驱动程序安装
  • 我希望我能更详细地描述#4,但我不熟悉您需要的具体窗口消息


    但是,一旦确定了要查找的正确窗口消息,就可以通过编程方式让程序等待(并处理)此WM。就个人而言,.

    你可能想看看
    和功能。我不确定是否100%,但如果您为设备类指定正确的guid,它似乎会起作用。

    您是否尝试了WM_DEVICECHANGE和/或RegisterDeviceNotification?