PNRP 使用 WSASetService 函数注册或删除 对等名称。
注册名称
注册包括一个对等名称和一组终结点,可在其中联系服务。 注册特定于 PNRP 云。 注册对等方后,注册与将注册信息传播到其他节点之间存在延迟。 在此期间,其他节点可能无法解析新注册的对等方。
服务注册不是永久性的。
- 如果注册对等名称的客户端进程退出或调用 WSACleanup,则取消注册对等名称。
- 如果当前进程已在同一云中注册指定的对等名称,则会将其替换为新的注册值。
注册对等名称时,必须指示以下参数值:
- essOperation 参数的值必须 RNRSERVICE_REGISTER。
- dwControlFlags 参数必须为零(0)。
注册对等名称时,LPWSAQUERYSET 由 lpqsRegInfo 参数引用的结构必须包含以下值:
-
dwSize
-
指定此结构的大小。
-
lpszServiceInstanceName
-
指定要注册的对等名称。 如果 对等名称 不安全,则标识是可选的。 如果标识指定为 NULL,则 PNRP 默认使用计算机本地标识。
-
lpServiceClassID
-
必须是SVCID_PNRPNAME。
-
lpVersion
-
忽视。 设置为 NULL。
-
lpszComment
-
忽视。 但是,字符串仍需少于 40 个字符,包括 NULL 终止符。
-
dwNameSpace
-
必须是 NS_PNRPNAME 或 NS_ALL。
-
lpNSProviderID
-
必须是 NS_PROVIDER_PNRPNAME 或 NULL。
-
lpszContext
-
必须是云名称、空字符串或 NULL。 如果此值 NULL 或空字符串,则使用默认云“Global”。 否则,它必须指向有效的云名称。
-
dwNumberOfProtocols
-
忽视。 设置为零(0)。
-
lpszQueryString
-
忽视。 设置为 NULL。
-
dwNumberOfCsAddrs
-
指定服务注册的地址数。 可以为单个名称注册的最大地址数为 10。
-
lpcsaBuffer
-
指向要注册的地址列表的指针。
-
dwOutputFlags
-
忽视。 设置为零(0)。
-
lpBlob
-
指向指向 PNRPINFO 结构的 BLOB 结构的指针。 必须设置 PNRPINFO 结构中的特定参数。 有关详细信息,请参阅以下 PNRPINFO 结构部分。
PNRPINFO 结构
如果设置了 LPWSAQUERYSET 结构的 lpBlob 成员,则必须设置 PNRPINFO 结构的以下成员:
-
dwSize
-
指定此结构的大小。
-
lpwszIdentity
-
指定使用 PeerIdentityCreate创建的对等名称的标识。 如果对等名称不安全,则标识是可选的。 如果标识指定为 NULL,则 PNRP 默认使用计算机本地标识。
-
nMaxResolve
-
忽视。 设置为零(0)。
-
dwTimeout
-
忽视。 设置为零(0)。
-
dwLifetime
-
指定刷新作之间的秒数。
-
enResolveCriteria
-
忽视。 设置为零(0)。
-
dwFlags
-
必须是零(0)或 PNRPINFO_HINT。 默认值为零(0)。 这意味着,使用 saHint中的 IP 地址生成 PNRP ID 的服务位置部分。 否则,服务位置是使用 lpcsaBuffer 成员的第一个 IPv6 条目中的第一个 IP 地址生成的。
-
saHint
-
指定提示的 IPv6 地址。
-
enNameState
-
忽视。 设置为零(0)。
取消注册对等名称
以下列表标识有关注销对等名称的重要信息。
- 只有注册对等名称的应用程序才能注销它。
- 如果调用 WSACleanup,则会自动注销对等名称。
- PNRP 始终删除整个服务名称注册。 它不允许删除单个地址。
- 注销名称时,essOperation 参数必须具有 RNRSERVICE_DELETE的值。
- PNRP 不支持值 RNRSERVICE_DEREGISTER。
- dwControlFlags 参数必须为零(0)。
注销名称时,LPWSAQUERYSET 结构,lpqsRegInfo 参数引用必须包含以下值:
-
dwSize
-
指定此结构的大小。
-
lpszServiceInstanceName
-
指定要注销的对等名称。
-
lpServiceClassID
-
必须是 SVCID_PNRPNAME。
-
lpVersion
-
忽视。 设置为 NULL。
-
lpszComment
-
忽视。 设置为 NULL。
-
dwNameSpace
-
必须是 NS_PNRPNAME 或 NS_ALL。
-
lpNSProviderID
-
必须是 NS_PROVIDER_PNRPNAME 或 NULL。
-
lpszContext
-
必须是云名称、空字符串或 NULL。 如果此值 NULL 或空字符串,则使用默认云“全局”。 否则,它必须指向有效的云名称。
-
dwNumberOfProtocols
-
忽视。 设置为零(0)。
-
lpszQueryString
-
忽视。 设置为 NULL。
-
dwNumberOfCsAddrs
-
忽视。 设置为 NULL。
-
lpcsaBuffer
-
忽视。 设置为 NULL。
-
dwOutputFlags
-
忽视。 设置为零(0)。
-
lpBlob
-
指向指向 PNRPINFO 结构的 BLOB 结构的指针。 lpBlob 结构的 lpszIdentity 成员标识用于注册对等名称的标识的名称。 其余成员必须设置为注册名称时使用的相同值。
相关主题
-
WSASetService