WSAQUERYSETW 结构 (winsock2.h)

WSAQUERYSET 结构提供有关给定服务的相关信息,包括服务类 ID、服务名称、适用的命名空间标识符和协议信息,以及服务侦听的一组传输地址。

语法

typedef struct _WSAQuerySetW {
  DWORD         dwSize;
  LPWSTR        lpszServiceInstanceName;
  LPGUID        lpServiceClassId;
  LPWSAVERSION  lpVersion;
  LPWSTR        lpszComment;
  DWORD         dwNameSpace;
  LPGUID        lpNSProviderId;
  LPWSTR        lpszContext;
  DWORD         dwNumberOfProtocols;
  LPAFPROTOCOLS lpafpProtocols;
  LPWSTR        lpszQueryString;
  DWORD         dwNumberOfCsAddrs;
  LPCSADDR_INFO lpcsaBuffer;
  DWORD         dwOutputFlags;
  LPBLOB        lpBlob;
} WSAQUERYSETW, *PWSAQUERYSETW, *LPWSAQUERYSETW;

成员

dwSize

类型:DWORD

WSAQUERYSET 结构的大小(以字节为单位)。 此成员用作版本控制机制,因为更高版本的 Windows 上已更改了 WSAQUERYSET 结构的大小。

lpszServiceInstanceName

类型:LPTSTR

指向包含服务名称的可选 NULL 终止字符串的指针。 未定义在字符串中使用通配符的语义,但某些命名空间提供程序可以支持。

lpServiceClassId

类型:LPGUID

对应于服务类的 GUID。 必须设置此成员。

lpVersion

类型:LPWSAVERSION

指向命名空间提供程序的可选所需版本号的指针。 此成员提供版本比较语义(即请求的版本必须完全匹配,或者版本必须不小于提供的值)。

lpszComment

类型:LPTSTR

对于查询,将忽略此成员。

dwNameSpace

类型:DWORD

一个命名空间标识符,用于确定要查询哪些命名空间提供程序。 传递特定命名空间标识符将只生成支持所查询的指定命名空间的命名空间提供程序。 指定 NS_ALL 将导致查询所有已安装的命名空间提供程序和活动命名空间提供程序。

dwNameSpace 成员的选项列在 Winsock2.h 包含文件中。 Windows Vista 及更高版本随附了多个新的命名空间提供程序。 可以安装其他命名空间提供程序,因此,以下可能的值只是那些常用的值。 其他许多值是可能的。

价值 意义
NS_ALL
所有已安装和活动的命名空间。
NS_BTH
蓝牙命名空间。 Windows Vista 及更高版本支持此命名空间标识符。
NS_DNS
域名系统 (DNS) 命名空间。
NS_EMAIL
电子邮件命名空间。 Windows Vista 及更高版本支持此命名空间标识符。
NS_NLA
网络位置感知 (NLA) 命名空间。 Windows XP 及更高版本支持此命名空间标识符。
NS_PNRPNAME
特定对等名称的对等名称空间。 Windows Vista 及更高版本支持此命名空间标识符。
NS_PNRPCLOUD
对等名称集合的对等名称空间。 Windows Vista 及更高版本支持此命名空间标识符。

lpNSProviderId

类型:LPGUID

指向特定命名空间提供程序的可选 GUID 的指针,用于在单个命名空间(如 NS_DNS)下注册多个命名空间提供程序。 传递特定命名空间提供程序的 GUID 只会查询指定的命名空间提供程序。 可以调用 WSAEnumNameSpaceProvidersWSAEnumNameSpaceProvidersEx 函数来检索命名空间提供程序的 GUID。

lpszContext

类型:LPTSTR

指向分层命名空间中查询的可选起点的指针。

dwNumberOfProtocols

类型:DWORD

协议约束数组的大小(以字节为单位)。 此成员可以为零。

lpafpProtocols

类型:LPAFPROTOCOLS

指向 AFPROTOCOLS 结构的可选数组的指针。 仅返回使用这些协议的服务。

lpszQueryString

类型:LPTSTR

指向可选的以 NULL 结尾的查询字符串的指针。 某些命名空间(如 Whois++)支持简单文本字符串中包含的扩充的类似 SQL 的查询。 此参数用于指定该字符串。

dwNumberOfCsAddrs

类型:DWORD

对于查询,将忽略此成员。

lpcsaBuffer

类型:LPCSADDR_INFO

对于查询,将忽略此成员。

dwOutputFlags

类型:DWORD

对于查询,将忽略此成员。

lpBlob

类型:LPBLOB

指向用于查询或设置提供程序特定命名空间信息的数据的可选指针。 此信息的格式特定于命名空间提供程序。

言论

WSAQUERYSET 结构用作 Windows 95 及更高版本上提供的原始命名空间提供程序版本 1 体系结构的一部分。 较新版本的命名空间体系结构在 Windows Vista 及更高版本上可用。

在大多数情况下,仅对特定传输协议感兴趣的应用程序应按地址系列和协议(而不是命名空间)限制其查询。 这将允许需要查找 TCP/IP 服务的应用程序,例如,让其查询由所有可用命名空间(如本地主机文件、DNS 和 NIS)进行处理。

注意

winsock2.h 标头将 WSAQUERYSET 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows 2000 Professional [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
标头 winsock2.h

另请参阅

蓝牙和 WSAQUERYSET 进行设备查询

蓝牙和 WSAQUERYSET 进行服务查询

用于设置服务 的蓝牙和 WSAQUERYSET

WSAEnumNameSpaceProviders

WSAEnumNameSpaceProvidersEx

WSALookupServiceBegin

WSALookupServiceNext

WSAQUERYSET2

WSASetService