關于Windows藍牙“啟用發現”控制的奇怪問題
近日在做基于Windows的藍牙程序開發時,需要使用程序來開啟藍牙的“啟用發現”,即使用API函數BluetoothEnableDiscovery。結果發現了如下問題:1. 無論程序中通過BluetoothEnableDiscovery對“啟用發現”作出如何的控制,程序退出后仍然回到之前“啟用發現”的狀態。
2. 正常情況下,程序可以對“啟用發現”作出控制。但是,當用戶使用控制面板中的藍牙控制對“啟用發現”做出操作后,程序中再次使用BluetoothEnableDiscovery進行控制時,該函數返回是成功,但是你會發現其實并沒有起作用。而手工使用控制面板中的藍牙控制仍然可以正常的進行控制。
3. 當你的程序運行中,藍牙裝置進行了拔插的操作后,程序就無法通過BluetoothEnableDiscovery進行操作了。
4. 控制函數BluetoothEnableIncomingConnections不存在如上的問題。
在網上查了一下,發現國外也有人提出此類問題,但是沒有人做出回答。我估計,是不是因為“啟用發現”與進程的控制域有關,系統的控制域大于進程的控制域,因此當系統作出了操作后,進程就沒有權限進行控制了。現在也只能這樣解釋了,不知道哪位高人看到我這篇文章后可以給出合理的解釋和解決方案。