蓝牙和 WSALookupServiceBegin 进行设备查询

本主题介绍如何使用 WSALookupServiceBegin 函数对可见和虚影设备执行查询。 有关详细信息,请参阅 发现蓝牙设备和服务

WSALookupServiceBegin 函数在其第一个参数(lpqsRestrictions)中使用 WSAQUERYSET 结构来定义搜索条件。 蓝牙提供了使用 WSALookupServiceBegin 函数和 WSAQUERYSET的具体准则。

下表列出了在查询设备时传递给 lpqsRestrictions 参数的 WSAQUERYSET 结构的限制。

WSAQUERYSET 成员 限制
dwSize 设置为 sizeofWSAQUERYSET)。
lpBlob 此成员包含指向 BLOB 结构的可选指针。 如果指定了此成员,则 LUP_FLUSHCACHE 的有效设备查询参数如下所示:
  • BLOB 结构的 cbSize 成员必须 大小BTH_QUERY_DEVICE)。
  • pBlobData 成员是指向 BTH_QUERY_DEVICE 结构的指针,LAP 成员是蓝牙查询访问代码,长度 成员是查询的长度(以秒为单位)。
dwNameSpace 设置为 NS_BTH
其他成员 将忽略 WSAQUERYSET 结构的其他成员。

 

下表中列出的标志用于 dwControlFlags 参数来控制查询结果。 WSALookupServiceBegin 函数使用 LUP_CONTAINERSLUP_FLUSHCACHE 标志;其余标志用于调用 WSALookupServiceNext 函数。

结果
LUP_CONTAINERS 指定查询的目的是获取蓝牙设备列表,而不是服务列表。 必须设置此标志。
LUP_FLUSHCACHE 触发对本地设备的查询或导致返回先前查询的缓存结果。
LUP_RETURN_TYPE 直接在 lpServiceClassIdWSAQUERYSET 结构的成员中返回蓝牙 COD(设备位类)。 COD 映射到 GUID 的 Data1 成员。
LUP_RES_SERVICE 返回本地蓝牙地址的信息。 仅当同时指定 LUP_RETURN_ADDR 时,此标志才有效。
LUP_RETURN_NAME 返回 lpszServiceInstanceNameWSAQUERYSET 结构中设备的显示名称,以便每次调用 WSALookupServiceNext 函数。 还必须指定此标志,以在指定 LUP_RETURN_BLOB 标志时检索 BTH_DEVICE_INFO 结构 成员 名称。
LUP_RETURN_ADDR 返回一个 SOCKADDR_BTH 结构,该结构包含 lpcsaBufferWSAQUERYSET 结构中对等方的 48 位地址,以便每次调用 WSALookupServiceNext 函数。 SOCKADDR_BTH 结构中的其他成员将为空。
LUP_RETURN_BLOB 在每个后续调用 WSALookupServiceNext时返回 BTH_DEVICE_INFO 结构。
LUP_FLUSHPREVIOUS 跳过下一个可用设备,并返回其后面的设备。

 

蓝牙和 WSALookupServiceBegin for Service Discovery

蓝牙和 WSALookupServiceNext

蓝牙和 WSAQUERYSET 进行设备查询

发现蓝牙设备和服务

WSALookupServiceBegin

WSALookupServiceNext

WSALookupServiceEnd

BLOB

BTH_QUERY_DEVICE

SOCKADDR_BTH

WSAQUERYSET

Windows 套接字