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