我正在編寫一些軟件,它可以使用Windows Bluetooth API自動連接藍牙設備。當它連接,Windows將自動開始安裝藍牙HID設備驅動程序,符合市場預期:Windows API:檢測驅動程序安裝完成
這大約需要10-15秒,之後Windows顯示familar「準備就緒」的消息:
的問題是,BluetoothSetServiceState()
回報只要安裝驅動開始,而不是當該設備實際上是準備使用。這會對我的代碼造成一些問題,因爲它一旦「連接」就會爲設備通信調用一個單獨的庫。前幾個調用失敗是因爲驅動程序尚未完成安裝,並且使這些連接嘗試似乎會干擾驅動程序的安裝,因爲如果在驅動程序安裝完成之前嘗試使用通信庫,Windows需要在設備啓動之前重新啓動使用。
我正在尋找的是一種方法來鉤住「準備使用」事件,當驅動程序安裝實際完成後,所以我不會讓我的通信庫過早調用。是否有一些Windows API調用可用於註冊函數回調或直接輪詢驅動程序安裝的狀態?
我寫這篇文章在香草C/C++,沒有.NET。謝謝你的幫助!
您是否嘗試過WM_DEVICECHANGE和/或RegisterDeviceNotification? – Ismael 2009-02-26 00:19:04