次の方法で共有


PNRP と WSASetService

PNRP では、 WSASetService 関数を使用して ピア名を登録または削除します。

名前の登録

登録には、サービスに接続できるピア名とエンドポイントのセットが含まれます。 登録は PNRP クラウドに固有です。 ピアが登録されると、登録と登録情報の他のノードへの伝達の間に遅延が発生します。 この間、他のノードが新しく登録されたピアを解決できない場合があります。

サービスの登録は永続的ではありません。

  • ピア名を登録するクライアント プロセスが終了するか 、WSACleanup を呼び出すと、ピア名は登録解除されます。
  • 指定したピア名が現在のプロセスによって同じクラウドに既に登録されている場合は、新しい登録値に置き換えられます。

ピア名を登録するときは、次のパラメーター値を指定する必要があります。

  • essOperation パラメーターの値は RNRSERVICE_REGISTER である必要があります。
  • dwControlFlags パラメーターは 0 (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 (0) に設定します。

lpszQueryString

無視されます。 NULL に設定 します

dwNumberOfCsAddrs

サービスによって登録されるアドレスの数を指定します。 1 つの名前に登録できるアドレスの最大数は 10 です。

lpcsaBuffer

登録するアドレスの一覧へのポインター。

dwOutputFlags

無視されます。 0 (0) に設定します。

lpBlob

PNRPINFO 構造体を指す BLOB 構造体へのポインター。 PNRPINFO 構造体の特定のパラメーターを設定する必要があります。 詳細については、次の PNRPINFO 構造体に関するセクションを参照してください。

PNRPINFO 構造体

LPWSAQUERYSET 構造体の lpBlob メンバーが設定されている場合は、PNRPINFO 構造体の次のメンバーを設定する必要があります。

Dwsize

この構造体のサイズを指定します。

lpwszIdentity

PeerIdentityCreate を使用して作成されるピア名の ID を指定します。 ピア名がセキュリティで保護されていない場合、ID は省略可能です。 ID が NULL として指定されている場合、PNRP は既定でコンピューターのローカル ID を使用します。

nMaxResolve

無視されます。 0 (0) に設定します。

dwTimeout

無視されます。 0 (0) に設定します。

dwLifetime

更新操作間の秒数を指定します。

enResolveCriteria

無視されます。 0 (0) に設定します。

dwFlags

0 (0) または PNRPINFO_HINTのいずれかである必要があります。 既定値は 0 です。 つまり、PNRP ID のサービスの場所の部分は 、saHint の IP アドレスを使用して構築されます。 それ以外の場合、サービスの場所は 、lpcsaBuffer メンバーの最初の IPv6 エントリの最初の IP アドレスを使用して作成されます。

saHint

ヒントの IPv6 アドレスを指定します。

enNameState

無視されます。 0 (0) に設定します。

ピア名の登録解除

次の一覧は、ピア名の登録解除に関する重要な情報を示しています。

  • ピア名を登録解除できるのは、ピア名を登録したアプリケーションだけです。
  • WSACleanup が呼び出されると、ピア名は自動的に登録解除されます。
  • PNRP は、常にサービス名の登録全体を削除します。 個々のアドレスを削除することはできません。
  • 名前の登録を解除する場合、 essOperation パラメーターの値は RNRSERVICE_DELETE である必要があります。
  • PNRP では、 値RNRSERVICE_DEREGISTERはサポートされていません。
  • dwControlFlags パラメーターは 0 (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 (0) に設定します。

lpszQueryString

無視されます。 NULL に設定 します

dwNumberOfCsAddrs

無視されます。 NULL に設定 します

lpcsaBuffer

無視されます。 NULL に設定 します

dwOutputFlags

無視されます。 0 (0) に設定します。

lpBlob

PNRPINFO 構造体を指す BLOB 構造体へのポインター。 lpBlob 構造体の lpszIdentity メンバーは、ピア名の登録に使用される ID の名前を識別します。 残りのメンバーは、名前の登録時に使用されるのと同じ値に設定する必要があります。

PNRP と BLOB

PNRP と WSAQUERYSET

PNRPINFO

PNRP NSP エラー コード

WSACleanup

WSASetService