PNRP 和 WSALookupServiceBegin
PNRP 使用 WSALookupServiceBegin 函数启动允许应用程序执行以下作的过程:
尝试执行其中一个函数的客户端使用 WSALookupServiceBegin、WSALookupServiceNext和 WSALookupServiceEnd 函数。
通过使用 WSANSPIoctl,可以异步使用查找服务。 有关异步使用查找服务函数的信息,请参阅 PNRP 和 WSANSPIoctl。
使用对等名称的过程与使用云的过程不同。 本主题分别介绍了每个过程。
解析名称
应用程序使用 WSALookupServiceBegin 获取在另一台计算机上注册的对等服务的 IP 地址、端口和协议。 WSALookupServiceBegin 函数用于启动名称解析过程,并设置参数和限制。 返回句柄,在调用 WSALookupServiceNext 和 WSANSPIoctl时必须使用句柄。
lpqsRestrictions
解析对等名称时,LPWSAQUERYSET 结构,lpqsRestrictions 参数引用必须包含以下值:
-
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
枚举云时,LPWSAQUERYSET 结构 lpqsRestrictions 参数引用必须包含以下值:
-
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 结构的指针。 如果 lpBlobNULL,则会枚举所有云。
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。 |
相关主题