用于设置服务的蓝牙和 WSAQUERYSET

蓝牙使用 WSAQUERYSET 结构,以便发现蓝牙命名空间中的设备和服务,NS_BTH。

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

成员 必需值(输入) 输出
dwSize 必须设置为 sizeofWSAQUERYSET)。 用作版本控制机制。 没有。
dwOutputFlags 未使用。 没有。
lpszServiceInstanceName 可选,但建议使用。 用于构造蓝牙 ServiceName 属性。 没有。
lpServiceClassId 必填。 对应于服务类的 GUID。 此值应对应于已知配置文件的蓝牙分配号码文档中的 GUID,或针对不基于配置文件的应用程序生成的唯一应用程序生成的 UUID。 用于构造 ServiceClassIdList 属性序列,并将其作为其唯一成员。 没有。
lpVersion 未使用。 没有。
lpszComment 自选。 用于构造蓝牙 ServiceDescription 属性。 没有。
dwNameSpace 要在其中约束服务的命名空间。 必须NS_BTH。 没有。
lpNSProviderId 不需要。 没有。
lpszContext 未使用。 没有。
dwNumberOfProtocols 未使用。 没有。
lpafpProtocols 未使用。 没有。
lpszQueryString 未使用。 没有。
dwNumberOfCsAddrs 要注册的地址数。 必须为 1。 没有。
lpcsaBuffer 如果未使用原始 SDP 流填充 lpBlob,则为必需。 指向 CSADDR_INFO 结构的指针,其 LocalAddr.lpSockaddr 成员指向服务器侦听连接的 SOCKADDR_BTH getsockname 函数可用于返回绑定套接字的 SOCKADDR_BTH 结构。 系统使用 lpcsaBuffer 成员中的信息来构造蓝牙 ProtocolDescriptorList SDP 属性。 lpcsaBuffer 中提供的协议和端口必须是唯一的(以前未注册的),并且用于为记录编制索引,以便后续调用删除。 用于构造 SDP 记录的蓝牙 ProtocolDescriptorList 属性。 没有。
lpBlob 自选。 指向指向 BTH_SET_SERVICE 结构的 BLOB 结构的指针,使客户端能够提供包含应用程序构造的二进制 SDP 记录的特定于蓝牙的结构。 如果向 WSASetService 函数提供了 lpBlob,则除 dwSize dwSizedwNameSpace 之外,WSAQUERYSET 结构的所有其他成员都会被忽略。 有关详细信息,请参阅 蓝牙和 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 套接字