用于服务查询的蓝牙和 WSAQUERYSET

蓝牙使用具有各种功能的 WSAQUERYSET 结构,以方便发现蓝牙命名空间中的设备和服务,NS_BTH。

WSALookupServiceBeginWSALookupServiceNext 函数使用 WSAQUERYSET 结构获取有关服务查询过程的数据。 下表介绍了如何为此在 WSAQUERYSET 结构中设置成员值。

成员 WSALookupServiceBegin 的输入 从 WSALookupServiceNext 返回的值
dwSize 必须设置为 sizeof (WSAQUERYSET) 。 sizeof (系统返回的 WSAQUERYSET) 。
dwOutputFlags 未使用。 未使用。
lpszServiceInstanceName 未使用。 服务的显示名称,从蓝牙 ServiceName SDP 属性的默认语言编码转换为 UTF-8 编码的字符串。 如果指定了LUP_RETURN_NAME,则返回 。
lpServiceClassId 必需。 要为其执行搜索的服务的最具体的单一蓝牙 UUID。 例如,如果此值设置为 L2CAP 协议的 UUID,则它会在目标设备上使用 L2CAP 协议返回所有服务。 如果设置为特定服务的 UUID,它将仅返回该服务的实例。 未使用。
lpVersion 未使用。 未使用。
lpszComment 未使用。 服务的说明,从蓝牙 ServiceDescription SDP 属性的默认语言编码转换为 UTF-8 编码字符串。 如果指定 了LUP_RETURN_COMMENT ,则返回 。
dwNameSpace 必须NS_BTH。 返回NS_BTH。
lpNSProviderId 未使用。 未使用。
lpszContext 必需。 用于建立 SDP 连接和查询服务的蓝牙设备地址。 此值必须是使用 WSAAddressToString 函数调用转换的字符串。 如果提供了本地蓝牙设备地址,则会搜索本地 SDP 数据库。 未使用。
dwNumberOfProtocols 未使用。 未使用。
lpafpProtocols 未使用。 未使用。
lpszQueryString 未使用。 未使用。
dwNumberOfCsAddrs 未使用。 指示 CSADDR_INFO 结构数组中的元素数。
lpcsaBuffer 未使用。 指向 CSADDR_INFO 结构的指针,该结构的 LocalAddr.lpSockaddr 成员指向包含远程服务的完整可连接地址 的SOCKADDR_BTH ,该地址从蓝牙 ProtocolDescriptorList SDP 属性的第一个条目转换。 如果指定 了LUP_RETURN_ADDR ,则返回 。
lpBlob 可选。 指向 BTH_QUERY_SERVICE 结构的指针,该结构包含用于限制搜索结果的高级参数。 如果提供, 则忽略 lpServiceClassId 并且缓存的查询不会成功。
  • 如果执行服务搜索:指向返回服务句柄的 BLOB 结构的指针。 (BLOB.cbSize) /sizeof (ULONG) 计算句柄数。 BLOB.pBlobData 是表示服务句柄的 ULONG 值的数组。
  • 如果执行属性或服务Attribute 搜索:指向返回二进制 SDP 记录的 BLOB 结构的指针。 BLOB.cbSize 是二进制 SDP 记录的大小。 BLOB.pBlobData 指向记录本身。 在许多情况下,二进制 SDP 记录是必需的,因为只有有限数量的 SDP 属性能够转换为 WSAQUERYSET 结构,并且仅转换默认编码的 UTF-8 字符串。 蓝牙参考部分提供了帮助分析二进制 SDP 记录的函数。
  • 如果指定了LUP_RETURN_BLOB,则返回 。

 

用于设置服务的蓝牙和 WSAQUERYSET

用于设备查询的蓝牙和 WSAQUERYSET

蓝牙和 BLOB

蓝牙和 WSALookupServiceBegin

蓝牙和 WSALookupServiceNext

蓝牙参考

Blob

BTH_QUERY_SERVICE

CSADDR_INFO

SOCKADDR_BTH

WSAAddressToString

WSAQUERYSET

Windows 套接字