PNRP 和 WSALookupServiceBegin

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

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

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

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

解析名称

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

lpqsRestrictions

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

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

枚举云时,LPWSAQUERYSET 结构 lpqsRestrictions 参数引用必须包含以下值:

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 错误代码