关于Windows蓝牙“启用发现”控制的奇怪问题

   近日在做基于Windows的蓝牙程序开发时,需要使用程序来开启蓝牙的“启用发现”,即使用API函数BluetoothEnableDiscovery。结果发现了如下问题:
   1. 无论程序中通过BluetoothEnableDiscovery对“启用发现”作出如何的控制,程序退出后仍然回到之前“启用发现”的状态。
   2. 正常情况下,程序可以对“启用发现”作出控制。但是,当用户使用控制面板中的蓝牙控制对“启用发现”做出操作后,程序中再次使用BluetoothEnableDiscovery进行控制时,该函数返回是成功,但是你会发现其实并没有起作用。而手工使用控制面板中的蓝牙控制仍然可以正常的进行控制。
   3. 当你的程序运行中,蓝牙装置进行了拔插的操作后,程序就无法通过BluetoothEnableDiscovery进行操作了。
   4. 控制函数BluetoothEnableIncomingConnections不存在如上的问题。

   在网上查了一下,发现国外也有人提出此类问题,但是没有人做出回答。我估计,是不是因为“启用发现”与进程的控制域有关,系统的控制域大于进程的控制域,因此当系统作出了操作后,进程就没有权限进行控制了。现在也只能这样解释了,不知道哪位高人看到我这篇文章后可以给出合理的解释和解决方案。

posted on 2007-07-11 23:30 迷宫の未来 阅读(2267) 评论(6)  编辑 收藏 引用

评论

# re: 关于Windows蓝牙“启用发现”控制的奇怪问题 2008-08-18 10:35 ukyocxl

想请教大哥一个问题,小弟近日也在做基于Windows的蓝牙程序开发。在做PC作为服务端接收文件时发现一个奇怪的问题。我是用VC开发的(PSDK2003)
当我用HP iPaq,N73向PC发送文件时,他们可以找到我的PC,但是用SONY的手机,或Nokia 6270向PC发送文件时,他们都找不到我的PC,但是他们可以在配对设备时找到我的PC。我可是都开了启用发现的。
另外我发现如果我用WINDOWS自带的蓝牙程序,当我没有选“接收文件”时SONY和Nokia 6270发送文件时也找不到我的PC,只有在选了“接收文件”后他们就可以找到了。。。相当的奇怪。不知在发布服务的时候缺了什么?望指点!  回复  更多评论   

# re: 关于Windows蓝牙“启用发现”控制的奇怪问题 2009-01-03 05:27 slz

我用了个蓝牙适配器,始用蓝牙,不知道那个“启用发现”选出项是什么意思呀  回复  更多评论   

# re: 关于Windows蓝牙“启用发现”控制的奇怪问题 2009-12-01 10:45 David Gao

When BluetoothEnableDiscovery changes the discovery state, the new state is valid for the lifetime of the calling application. Additionally, if a Bluetooth radio previously made discoverable with this function is disabled and re-enabled via the application, discoverability will not persist. Once the calling application terminates, the discovery state of the specified Bluetooth radio reverts to the state it was in before BluetoothEnableDiscovery was called.

这是MSDN上的原话,我也测试过了,就是BluetoothEnableDiscover这个函数的作用范围只限于AP的进程存活的时间。比如原来不是Discoverable的(BluetoothIsDiscoverable函数返回false),当你调用BluetoothEnableDiscover使他Discoverable后,在调用进程没有退出前将维持Discoverable的状态,退出后状态就会恢复到你没有调用BluetoothEnableDiscover之前的状态。
  回复  更多评论   

# re: 关于Windows蓝牙“启用发现”控制的奇怪问题 2010-04-12 15:05 shuixin536

现在本人也遇到lz的问题,大侠救命  回复  更多评论   

# re: 关于Windows蓝牙“启用发现”控制的奇怪问题[未登录] 2010-11-18 15:56 WAYNE

我也也遇到slz和shuixin536的问题,我發現就算有註冊
OBEX PUSH FILE服務,用我的手機也找不到我的電腦,但是如果之前有用
WINDOWS XP SP2 提供的檔案傳輸精靈(接收模式),就可以找到,
然後用我自己寫的OBEX SERVER 是可以完整地收到檔案,
到底是因為需要做些什麼事情才能讓手機收尋到OBEX SERVER?  回复  更多评论   

# re: 关于Windows蓝牙“启用发现”控制的奇怪问题 2010-12-28 16:48 从东方来

大神 我也遇到跟楼上一模一样的问题
自己写的蓝牙的应用程序
也用了BluetoothEnableDiscovery
用NOKIA N73是可以找到的
但是用另外一个手机找不到
是不是发布服务的时候哪个地方没设置好呢?

我测试用XP2自带的协议时 两款手机均找到PC端并可以发送文件到电脑  回复  更多评论   


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理


<2007年11月>
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678

导航

统计

常用链接

留言簿(10)

随笔档案

文章档案

最新随笔

搜索

积分与排名

最新随笔

最新评论

阅读排行榜

评论排行榜