共用方式為


PNRP 和 WSASetService

PNRP 會使用 WSASetService 函 式來註冊或移除 對等名稱

註冊名稱

註冊包含可連絡服務的對等名稱和一組端點。 註冊專屬於 PNRP 雲端。 註冊對等之後,註冊與將註冊資訊傳播至其他節點之間會有延遲。 在此期間,其他節點可能無法解析新註冊的對等。

服務註冊不是持續性的。

  • 如果註冊對等名稱的用戶端進程結束或呼叫 WSACleanup,則會取消註冊對等名稱。
  • 如果目前進程已在相同雲端中註冊指定的對等名稱,則會以新的註冊值取代。

註冊對等名稱時,必須指出下列參數值:

  • essOperation參數的值必須RNRSERVICE_REGISTER。
  • dwControlFlags 參數必須是零 (0) 。

註冊對等名稱時,lpqsRegInfo參數所參考的LPWSAQUERYSET結構必須包含下列值:

dwSize

指定這個 結構的大小。

lpszServiceInstanceName

指定要註冊的對等名稱。 如果 對等名稱 不安全,則身分識別是選擇性的。 如果身分識別指定為 Null,則 PNRP 預設會使用電腦本機身分識別。

lpServiceClassID

必須是SVCID_PNRPNAME。

lpVersion

忽略。 設定為 Null

lpszComment

忽略。 不過,字串仍然需要少於 40 個字元,包括 Null 結束字元。

dwNameSpace

必須是 NS_PNRPNAMENS_ALL

lpNSProviderID

必須是 NS_PROVIDER_PNRPNAMENull

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 識別碼的服務位置部分。 否則,服務位置是使用 lpcsaBuffer 成員之第一個 IPv6 專案中的第一個 IP 位址來建置。

saHint

指定提示的 IPv6 位址。

enNameState

忽略。 設定為零 (0) 。

取消註冊對等名稱

下列清單會識別有關取消註冊對等名稱的重要資訊。

  • 只有註冊對等名稱的應用程式才能取消註冊。
  • 如果呼叫 WSACleanup ,則會自動取消註冊對等名稱。
  • PNRP 一律會移除整個服務名稱註冊。 不允許移除個別位址。
  • 取消註冊名稱時, essOperation 參數的值必須為 RNRSERVICE_DELETE
  • PNRP 不支援 值RNRSERVICE_DEREGISTER
  • dwControlFlags參數必須是零 (0) 。

取消註冊名稱時,lpqsRegInfo參數參考的LPWSAQUERYSET結構必須包含下列值:

dwSize

指定這個 結構的大小。

lpszServiceInstanceName

指定要取消註冊的對等名稱。

lpServiceClassID

必須 SVCID_PNRPNAME

lpVersion

忽略。 設定為 Null

lpszComment

忽略。 設定為 Null

dwNameSpace

必須是 NS_PNRPNAMENS_ALL

lpNSProviderID

必須是 NS_PROVIDER_PNRPNAMENull

lpszCoNtext

必須是雲端名稱、空字串或 Null。 如果此值為 Null 或空字串,則會使用預設雲端「全域」。 否則,它必須指向有效的雲端名稱。

dwNumberOfProtocols

忽略。 設定為零 (0) 。

lpszQueryString

忽略。 設定為 Null

dwNumberOfCsAddrs

忽略。 設定為 Null

lpcsaBuffer

忽略。 設定為 Null

dwOutputFlags

忽略。 設定為零 (0) 。

lpBlob

指向PNRPINFO結構的BLOB結構的指標。 lpBlob 結構的 lpszIdentity成員會識別用來註冊對等名稱的身分識別名稱。 其餘成員必須設定為註冊名稱時所使用的相同值。

PNRP 和 BLOB

PNRP 和 WSAQUERYSET

PNRPINFO

PNRP NSP 錯誤碼

WSACleanup

WSASetService