使用 Windows 套接字进行蓝牙编程 - 范围内的设备



我正在尝试使用Windows套接字来发现范围内的BT设备。我正在使用这篇 MSDN 文章。

代码有效,我通过调用WSALookupServiceNext(...)获取设备信息。

设备信息由 WSAQUERYSETW 结构提供。

如何根据 WSAQUERYSETW 结构中的数据知道设备是否在范围内?

我可以检查WSAQUERYSETW::d wOutputFlags是否具有以下标志之一:

BTHNS_RESULT_DEVICE_CONNECTED
BTHNS_RESULT_DEVICE_AUTHENTICATED
BTHNS_RESULT_DEVICE_REMEMBERED

如果设备已连接,那么它肯定在范围内,但是其他状态呢?

记忆状态到底是什么?

这些标志并不相互排斥 - 设备可以是所有三个或没有。

  • 记住意味着它列在控制面板的"蓝牙设备"下。它可能在范围内,也可能不在范围内。我们对Remembered设备的唯一保证是它们在过去处于范围内的某个点。

  • 经过身份验证意味着它已与设备配对 - 即如果需要引脚,则已经提供。设备可以被记住,但不能经过身份验证;但是,任何经过身份验证的设备(即Windows已与之配对)都将被记住

如果设备之前已配对,然后手动删除,则会取消身份验证,并且既不会记住也不会对其进行身份验证。

最新更新