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_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 識別碼的服務位置部分。 否則,服務位置是使用 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_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