近日在做基于Windows的蓝牙程序开发时,需要使用程序来开启蓝牙的“启用发现”,即使用API函数BluetoothEnableDiscovery。结果发现了如下问题:
1. 无论程序中通过BluetoothEnableDiscovery对“启用发现”作出如何的控制,程序退出后仍然回到之前“启用发现”的状态。
2. 正常情况下,程序可以对“启用发现”作出控制。但是,当用户使用控制面板中的蓝牙控制对“启用发现”做出操作后,程序中再次使用BluetoothEnableDiscovery进行控制时,该函数返回是成功,但是你会发现其实并没有起作用。而手工使用控制面板中的蓝牙控制仍然可以正常的进行控制。
3. 当你的程序运行中,蓝牙装置进行了拔插的操作后,程序就无法通过BluetoothEnableDiscovery进行操作了。
4. 控制函数BluetoothEnableIncomingConnections不存在如上的问题。
在网上查了一下,发现国外也有人提出此类问题,但是没有人做出回答。我估计,是不是因为“启用发现”与进程的控制域有关,系统的控制域大于进程的控制域,因此当系统作出了操作后,进程就没有权限进行控制了。现在也只能这样解释了,不知道哪位高人看到我这篇文章后可以给出合理的解释和解决方案。