PNRP 和 WSALookupServiceBegin
PNRP 使用 WSALookupServiceBegin 函数启动允许应用程序执行以下操作的进程:
尝试执行其中一个函数的客户端使用 WSALookupServiceBegin、 WSALookupServiceNext 和 WSALookupServiceEnd 函数。
通过使用 WSANSPIoctl,可以异步使用查找服务。 有关异步使用查找服务函数的信息,请参阅 PNRP 和 WSANSPIoctl。
使用对等名称的过程不同于使用云。 本主题中分别介绍了每个过程。
解析名称
应用程序使用 WSALookupServiceBegin 获取在另一台计算机上注册的对等服务的 IP 地址、端口和协议。 WSALookupServiceBegin 函数用于启动名称解析过程,并设置参数和限制。 返回句柄,在调用 WSALookupServiceNext 和 WSANSPIoctl 时必须使用句柄。
lpqsRestrictions
解析对等名称时,lpqsRestrictions 参数引用的 LPWSAQUERYSET 结构必须包含以下值:
-
dwSize
-
指定此结构的大小。
-
lpszServiceInstanceName
-
指定要解析的对等名称。
-
lpServiceClassID
-
必须 SVCID_PNRPNAME。
-
lpVersion
-
保留的 必须为 NULL。
-
lpszComment
-
保留的 必须为 NULL。
-
dwNameSpace
-
必须是 NS_PNRPNAME 或 NS_ALL。
-
lpNSProviderID
-
必须为 NS_PROVIDER_PNRPNAME 或 NULL。
-
lpszContext
-
必须是云名称、空字符串或 NULL。 如果此值为 NULL 或空字符串,则使用默认云“Global_”。 否则,它必须指向有效的云名称。
-
dwNumberOfProtocols
-
保留的 必须为零 (0) 。
-
lpszQueryString
-
保留的 必须为 NULL。
-
dwNumberOfCsAddrs
-
保留的 必须为零 (0) 。
-
lpcsaBuffer
-
保留的 必须为 NULL。
-
dwOutputFlags
-
保留的 必须为零 (0) 。
-
lpBlob
-
必须是指向 BLOB 结构的指针或 NULL。 如果为 NULL,则使用默认值。 如果已设置, 则 lpBlob 指向 PNRPINFO 结构,并且必须设置 PNRPINFO 结构中的特定参数。 有关详细信息,请参阅 PNRPINFO 结构的以下说明。
PNRPINFO 结构
如果设置了 LPWSAQUERYSET 结构的 lpBlob 成员,则必须设置 PNRPINFO 结构的以下成员:
-
dwSize
-
指定此结构的大小。
-
lpwszIdentity
-
保留的 必须为 NULL。
-
nMaxResolve
-
指定请求的解析数。
-
dwTimeout
-
指定等待响应的请求超时期限。 默认为 30 秒。 最大为 600 秒 (10 分钟) 。
-
dwLifetime
-
保留的 必须为零 (0) 。
-
enResolveCriteria
-
必须是允许的值之一。 默认值为 PNRP_RESOLVE_CRITERIA_NON_CURRENT_PROCESS_PEER_NAME。 PNRP_RESOLVE_CRITERIA指定有效值。
-
dwFlags
-
必须为零 (0) 或 PNRPINFO_HINT。 默认值为零 (0)。
-
saHint
-
指定提示的 IP 地址。 尝试查找最近的对等名称时使用提示。 提示的格式为 IPv6 地址。 如果在查找最近的对等名称时未指定 saHint ,则改用本地计算机的 IPv6 地址。 如果未设置 dwFlags ,则忽略此成员。
-
enNameState
-
保留的 必须为零 (0) 。
dwControlFlags
PNRP 支持以下LUP_RETURN_* 标志:
值 | 说明 |
---|---|
LUP_RETURN_NAME | 返回名称和上下文。 |
LUP_RETURN_COMMENT | 返回与名称关联的注释。 |
LUP_RETURN_ADDR | 返回与名称关联的地址。 |
枚举网络云
lpqsRestrictions
枚举云时,lpqsRestrictions 参数引用的 LPWSAQUERYSET 结构必须包含以下值:
-
dwSize
-
指定此结构的大小。
-
lpszServiceInstanceName
-
必须为 NULL。
-
lpServiceClassID
-
必须 SVCID_PNRPCLOUD。
-
lpVersion
-
保留的 必须为 NULL。
-
lpszComment
-
保留的 必须为 NULL。
-
dwNameSpace
-
必须 NS_PNRPCLOUD。
-
lpNSProviderID
-
必须为 NS_PROVIDER_PNRPCLOUD 或 NULL。
-
lpszContext
-
保留的 必须为 NULL。
-
dwNumberOfProtocols
-
保留的 必须为零 (0) 。
-
lpszQueryString
-
保留的 必须为 NULL。
-
dwNumberOfCsAddrs
-
保留的 必须为零 (0) 。
-
lpcsaBuffer
-
保留的 必须为 NULL。
-
dwOutputFlags
-
保留的 必须为零 (0) 。
-
lpBlob
-
指向指向 PNRPCLOUDINFO 结构的 BLOB 结构的指针。 如果 lpBlob 为 NULL,则枚举所有云。
PNRPCLOUDINFO 结构
枚举云时,必须设置 PNRPCLOUDINFO 结构的以下成员:
-
dwSize
-
指定此结构的大小。
-
云
-
指向 一个 结构,该结构指定可用于筛选搜索结果的条件。 Cloud.Scope 成员可以是PNRP_SCOPE_ANY、PNRP_GLOBAL_SCOPE、PNRP_SITE_LOCAL_SCOPE或PNRP_LINK_LOCAL_SCOPE。 如果指定 了PNRP_SCOPE_ANY ,则返回所有云。 否则,仅返回与 Cloud.Scope 匹配的云。
-
enCloudState
-
保留的 必须为零 (0) 。
dwControlFlags
PNRP 支持以下LUP_RETURN_* 标志:
值 | 说明 |
---|---|
LUP_RETURN_NAME | 返回名称和上下文。 |
LUP_RETURN_BLOB | 返回与此云关联的 BLOB 。 |
相关主题