用于服务查询的蓝牙和 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,其中包含从蓝牙协议描述符列表 SDP 属性的第一个条目转换而来的远程服务的完整可连接地址。 如果指定了 LUP_RETURN_ADDR 则会返回。
lpBlob 可选。 指向 BTH_QUERY_SERVICE 结构的指针,该结构包含用于限制搜索结果的高级参数。 如果提供,lpServiceClassId 将被忽略,而缓存查询不会成功。
  • 如果执行服务搜索:指向返回服务句柄的 BLOB 结构的指针。 (BLOB.cbSize)/sizeof(ULONG) 计算句柄数量。 BLOB.pBlobData 是表示服务句柄的 ULONG 值的数组。
  • 如果执行属性或 serviceAttribute 搜索:指向会返回二进制 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 套接字