PNRP は、WSASetService 関数を使用して、ピア名を登録または削除します。
名前の登録
登録には、サービスに接続できるピア名とエンドポイントのセットが含まれます。 登録は PNRP クラウドに固有です。 ピアが登録されると、登録と登録情報の他のノードへの伝達の間に遅延が発生します。 この間、他のノードが新しく登録されたピアを解決できない場合があります。
サービスの登録は永続的ではありません。
- ピア名を登録するクライアント プロセスが終了するか、WSACleanup呼び出すと、ピア名は登録解除されます。
- 指定したピア名が現在のプロセスによって同じクラウドに既に登録されている場合、新しい登録値に置き換えられます。
ピア名を登録するときは、次のパラメーター値を指定する必要があります。
- essOperation パラメーター 値が RNRSERVICE_REGISTERである必要があります。
- dwControlFlags パラメーター ゼロ (0) にする必要があります。
ピア名を登録する場合、lpqsRegInfo パラメーターによって参照される LPWSAQUERYSET 構造体には、次の値が含まれている必要があります。
-
dwSizeを する
-
この構造体のサイズを指定します。
-
lpszServiceInstanceNameを する
-
登録するピア名を指定します。 ピア名 がセキュリティで保護されていない場合、ID は省略可能です。 ID が NULLとして指定されている場合、PNRP は既定でコンピューターのローカル ID を使用します。
-
lpServiceClassIDを する
-
SVCID_PNRPNAMEする必要があります。
-
lpVersion
-
無視。 NULL に設定します。
-
lpszCommentを する
-
無視。 ただし、文字列は、NULL ターミネータを含め、40 文字未満である必要があります。
-
dwNameSpaceを する
-
NS_PNRPNAME または NS_ALLである必要があります。
-
lpNSProviderIDの
-
NS_PROVIDER_PNRPNAME または NULL する必要があります。
-
lpszContextを する
-
クラウド名、空の文字列、または NULL する必要があります。 この値が NULL または空の文字列 場合は、既定のクラウド "Global" が使用されます。 それ以外の場合は、有効なクラウド名を指す必要があります。
-
dwNumberOfProtocolsの
-
無視。 0 に設定します。
-
lpszQueryStringを する
-
無視。 NULL に設定します。
-
dwNumberOfCsAddrsを する
-
サービスによって登録されるアドレスの数を指定します。 1 つの名前に登録できるアドレスの最大数は 10 です。
-
lpcsaBufferを する
-
登録するアドレスの一覧へのポインター。
-
dwOutputFlagsの
-
無視。 0 に設定します。
-
lpBlobを する
-
PNRPINFO 構造体を指す BLOB 構造体へのポインター。 PNRPINFO 構造体の特定のパラメーターを設定する必要があります。 詳細については、PNRPINFO 構造体の次の セクションを参照してください。
PNRPINFO 構造体
lpBlobLPWSAQUERYSET 構造体のメンバーが設定されている場合は、PNRPINFO 構造体の次のメンバーを設定する必要があります。
-
dwSizeを する
-
この構造体のサイズを指定します。
-
lpwszIdentity
-
PeerIdentityCreateを使用して作成されるピア名ID を指定します。 ピア名がセキュリティで保護されていない場合、ID は省略可能です。 ID が NULLとして指定されている場合、PNRP は既定でコンピューターのローカル ID を使用します。
-
nMaxResolve
-
無視。 0 に設定します。
-
dwTimeoutを する
-
無視。 0 に設定します。
-
dwLifetimeを する
-
更新操作間の秒数を指定します。
-
enResolveCriteriaを する
-
無視。 0 に設定します。
-
dwFlagsを する
-
ゼロ (0) または PNRPINFO_HINTにする必要があります。 既定値は 0 です。 つまり、PNRP ID のサービスロケーション部分は、saHintの IP アドレスを使用して構築されます。 それ以外の場合、サービスの場所は、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 または空の文字列 場合は、既定のクラウド "Global" が使用されます。 それ以外の場合は、有効なクラウド名を指す必要があります。
-
dwNumberOfProtocolsの
-
無視。 0 に設定します。
-
lpszQueryStringを する
-
無視。 NULL に設定します。
-
dwNumberOfCsAddrsを する
-
無視。 NULL に設定します。
-
lpcsaBufferを する
-
無視。 NULL に設定します。
-
dwOutputFlagsの
-
無視。 0 に設定します。
-
lpBlobを する
-
PNRPINFO 構造体を指す BLOB 構造体へのポインター。 lpBlob 構造体の lpszIdentity メンバーは、ピア名の登録に使用される ID の名前を識別します。 残りのメンバーは、名前の登録時に使用されるのと同じ値に設定する必要があります。
関連トピック