用于设置服务的蓝牙和 WSAQUERYSET

蓝牙使用 WSAQUERYSET 结构来帮助发现蓝牙命名空间 NS_BTH 中的设备和服务。

WSASetService 函数使用 WSAQUERYSET 结构在蓝牙命名空间中注册或删除服务实例。 下表列出了 WSAQUERYSET 构中的成员值。

成员 必需值(输入) 输出
dwSize 必须设置为 sizeof(WSAQUERYSET)。 用作版本控制机制。 无。
dwOutputFlags 未使用。 无。
lpszServiceInstanceName 可选,但建议提供。 用于构建蓝牙 ServiceName 属性。 无。
lpServiceClassId 必需。 与服务类别对应的 GUID。 对于已知配置文件,此值应与蓝牙分配号码文件中的 GUID 对应;对于不基于配置文件的应用程序,此值应与应用程序生成的唯一 UUID 对应。 用于构建 ServiceClassIdList 属性序列,并将其作为其唯一成员。 无。
lpVersion 未使用。 无。
lpszComment 可选。 用于构建蓝牙 ServiceDescription 属性。 无。
dwNameSpace 要在其中约束服务的命名空间。 必须是 NS_BTH。 无。
lpNSProviderId 不需要。 无。
lpszContext 未使用。 无。
dwNumberOfProtocols 未使用。 无。
lpafpProtocols 未使用。 无。
lpszQueryString 未使用。 无。
dwNumberOfCsAddrs 要注册的地址数。 必须为 1。 无。
lpcsaBuffer 如果 lpBlob 未填充原始 SDP 流,则为必需。 指向 CSADDR_INFO 结构的指针,其中的 LocalAddr.lpSockaddr 成员指向服务器正在监听连接的 SOCKADDR_BTHgetsockname 函数可用于返回绑定套接字的 SOCKADDR_BTH 结构。 系统使用 lpcsaBuffer 成员中的信息来构建蓝牙 ProtocolDescriptorList SDP 属性。 lpcsaBuffer 中提供的协议和端口必须是唯一的(之前未注册),并用于索引记录以便后续调用进行删除。 用于构建 SDP 记录的蓝牙 ProtocolDescriptorList 属性。 无。
lpBlob 可选。 指向 BLOB 结构的指针,该结构指向 BTH_SET_SERVICE 结构,让客户端能够提供特定于蓝牙的结构,其中包含应用程序构建的二进制 SDP 记录。 如果 lpBlob 被提供给 WSASetService 函数,那么 WSAQUERYSET 结构中除 dwSizedwNameSpace 以外的所有其他成员都将被忽略。 有关详细信息,请参阅蓝牙和 BLOB。 在许多情况下都有必要提交二进制 SDP 记录是必要的,因为可以从 WSAQUERYSET 结构转换的 SDP 属性数量有限,而且字符串只能转换为默认语言 UTF-8 编码。 如果在输入时提供了可选的 BLOBBTH_SET_SERVICE 结构,以及必须由 BTH_SET_SERVICE 指向的 ULONG 版本和 HANDLE 值,则会更新版本,使其包含蓝牙 Windows 套接字提供程序的 BTH_SDP_VERSION 值,并提供随后删除记录所需的句柄。

 

注意

要删除服务,BTH_SET_SERVICE 结构中唯一需要的成员是 pSdpVersionpRecordHandle 成员。

 

用于设备查询的蓝牙和 WSAQUERYSET

用于服务查询的蓝牙和 WSAQUERYSET

蓝牙和 BLOB

蓝牙和 WSASetService

BLOB

BTH_SET_SERVICE

CSADDR_INFO

getsockname

SOCKADDR_BTH

WSAQUERYSET

Windows 套接字