用于设置服务的蓝牙和 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_BTH。 getsockname 函数可用于返回绑定套接字的 SOCKADDR_BTH 结构。 系统使用 lpcsaBuffer 成员中的信息来构建蓝牙 ProtocolDescriptorList SDP 属性。 lpcsaBuffer 中提供的协议和端口必须是唯一的(之前未注册),并用于索引记录以便后续调用进行删除。 用于构建 SDP 记录的蓝牙 ProtocolDescriptorList 属性。 | 无。 |
lpBlob | 可选。 指向 BLOB 结构的指针,该结构指向 BTH_SET_SERVICE 结构,让客户端能够提供特定于蓝牙的结构,其中包含应用程序构建的二进制 SDP 记录。 如果 lpBlob 被提供给 WSASetService 函数,那么 WSAQUERYSET 结构中除 dwSize 和 dwNameSpace 以外的所有其他成员都将被忽略。 有关详细信息,请参阅蓝牙和 BLOB。 在许多情况下都有必要提交二进制 SDP 记录是必要的,因为可以从 WSAQUERYSET 结构转换的 SDP 属性数量有限,而且字符串只能转换为默认语言 UTF-8 编码。 | 如果在输入时提供了可选的 BLOB 和 BTH_SET_SERVICE 结构,以及必须由 BTH_SET_SERVICE 指向的 ULONG 版本和 HANDLE 值,则会更新版本,使其包含蓝牙 Windows 套接字提供程序的 BTH_SDP_VERSION 值,并提供随后删除记录所需的句柄。 |
注意
要删除服务,BTH_SET_SERVICE 结构中唯一需要的成员是 pSdpVersion 和 pRecordHandle 成员。
相关主题
-
BLOB