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

C++ 使用Windows套接字进行蓝牙编程-设备在范围内,c++,windows,visual-c++,bluetooth,winsock,C++,Windows,Visual C++,Bluetooth,Winsock,我正在尝试使用Windows套接字来发现范围内的BT设备。我用这篇文章来做这个 代码运行正常,我通过调用WSALookupServiceNext获取设备信息 设备信息由结构提供 如何根据WSAQUERYSETW结构中的数据知道设备是否在范围内 我可以检查WSAQUERYSETW::dwOutputFlags是否具有以下标志之一: BTHNS_RESULT_DEVICE_CONNECTED BTHNS_RESULT_DEVICE_AUTHENTICATED BTHNS_RESULT_DEVICE_

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

代码运行正常,我通过调用WSALookupServiceNext获取设备信息

设备信息由结构提供

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

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

BTHNS_RESULT_DEVICE_CONNECTED
BTHNS_RESULT_DEVICE_AUTHENTICATED
BTHNS_RESULT_DEVICE_REMEMBERED
若设备已连接,那个么它肯定在范围内,但其他状态呢


确切的记忆状态是什么?

这些标志并不相互排斥-一个设备可能是全部三个或没有

记住表示它列在控制面板的“蓝牙设备”下。它可能在范围内,也可能不在范围内。我们对记忆设备的唯一保证是,它们在过去的某个时间处于范围内

认证意味着它已与设备配对-即,如果需要pin,则它已提供。设备可以被记忆,但不能被认证;但是,任何已通过身份验证的设备(即windows已与其配对)都将被记住


如果设备之前已配对,然后手动删除,则此操作将取消对其的身份验证,并且不会记住或验证该设备。

谢谢!接下来的问题是,为了发现范围内的设备,我应该将Membered flag设置为TRUE吗?或者我可以将其设置为FALSE?一方面,我不想减少我的结果集,另一方面,我不想要结果集中不在范围内的设备。好问题-我不认为你可以,但如果有一种方法可以获得所有范围内设备,而不包括记忆但不在范围内的设备或排除记忆但在范围内的设备,我很想知道。