次の方法で共有


PNRP と WSASetService

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 の名前を識別します。 残りのメンバーは、名前の登録時に使用されるのと同じ値に設定する必要があります。

PNRP と BLOB

PNRP と WSAQUERYSET する

PNRPINFOする

PNRP NSP エラー コード する

WSACleanup

WSASetService