PNRP 和 WSALookupServiceBegin

PNRP 使用 WSALookupServiceBegin 函数启动允许应用程序执行以下操作的进程:

尝试执行其中一个函数的客户端使用 WSALookupServiceBeginWSALookupServiceNextWSALookupServiceEnd 函数。

通过使用 WSANSPIoctl,可以异步使用查找服务。 有关异步使用查找服务函数的信息,请参阅 PNRP 和 WSANSPIoctl

使用对等名称的过程不同于使用云。 本主题中分别介绍了每个过程。

解析名称

应用程序使用 WSALookupServiceBegin 获取在另一台计算机上注册的对等服务的 IP 地址、端口和协议。 WSALookupServiceBegin 函数用于启动名称解析过程,并设置参数和限制。 返回句柄,在调用 WSALookupServiceNextWSANSPIoctl 时必须使用句柄。

lpqsRestrictions

解析对等名称时,lpqsRestrictions 参数引用的 LPWSAQUERYSET 结构必须包含以下值:

dwSize

指定此结构的大小。

lpszServiceInstanceName

指定要解析的对等名称。

lpServiceClassID

必须 SVCID_PNRPNAME

lpVersion

保留的 必须为 NULL

lpszComment

保留的 必须为 NULL

dwNameSpace

必须是 NS_PNRPNAMENS_ALL

lpNSProviderID

必须为 NS_PROVIDER_PNRPNAMENULL

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_PNRPCLOUDNULL

lpszContext

保留的 必须为 NULL

dwNumberOfProtocols

保留的 必须为零 (0) 。

lpszQueryString

保留的 必须为 NULL

dwNumberOfCsAddrs

保留的 必须为零 (0) 。

lpcsaBuffer

保留的 必须为 NULL

dwOutputFlags

保留的 必须为零 (0) 。

lpBlob

指向指向 PNRPCLOUDINFO 结构的 BLOB 结构的指针。 如果 lpBlobNULL,则枚举所有云。

PNRPCLOUDINFO 结构

枚举云时,必须设置 PNRPCLOUDINFO 结构的以下成员:

dwSize

指定此结构的大小。

指向 一个 结构,该结构指定可用于筛选搜索结果的条件。 Cloud.Scope 成员可以是PNRP_SCOPE_ANYPNRP_GLOBAL_SCOPEPNRP_SITE_LOCAL_SCOPEPNRP_LINK_LOCAL_SCOPE。 如果指定 了PNRP_SCOPE_ANY ,则返回所有云。 否则,仅返回与 Cloud.Scope 匹配的云。

enCloudState

保留的 必须为零 (0) 。

dwControlFlags

PNRP 支持以下LUP_RETURN_* 标志:

说明
LUP_RETURN_NAME 返回名称和上下文。
LUP_RETURN_BLOB 返回与此云关联的 BLOB

 

PNRP 和 BLOB

PNRP 和 WSALookupServiceEnd

PNRP 和 WSALookupServiceNext

PNRP 和 WSANSPIoctl

PNRP 和 WSAQUERYSET

PNRPCLOUDINFO

PNRPINFO

PNRP NSP 错误代码