PNRP と WSALookupServiceBegin

PNRP では 、WSALookupServiceBegin 関数を使用して、アプリケーションが次の操作を実行できるようにするプロセスを開始します。

いずれかの関数を実行しようとするクライアントは、 WSALookupServiceBeginWSALookupServiceNext、および WSALookupServiceEnd 関数を 使用します。

WSANSPIoctl を使用すると、ルックアップ サービスを非同期的に使用できます。 ルックアップ サービス関数を非同期的に使用する方法については、「 PNRP と WSANSPIoctl」を参照してください。

ピア名を操作するプロセスは、クラウドの操作とは異なります。 各プロセスについては、このトピックで個別に説明します。

名前の解決

アプリケーションは WSALookupServiceBegin を使用して、別のコンピューターに登録されているピア サービスの IP アドレス、ポート、プロトコルを取得します。 WSALookupServiceBegin 関数を使用して名前解決プロセスを開始し、パラメーターと制限を設定します。 ハンドルが返され、 WSALookupServiceNextWSANSPIoctl を呼び出すときに使用する必要があります。

lpqsRestrictions

ピア名を解決する場合、lpqsRestrictions パラメーターが参照する 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

予約済み。ゼロ (0) にする必要があります。

lpcsaBuffer

予約済み。 NULL である必要があります。

dwOutputFlags

予約済み。ゼロ (0) にする必要があります。

lpBlob

BLOB 構造体へのポインターまたは NULL である必要があります。 NULL の場合は、既定値が使用されます。 設定されている場合、 lpBlobPNRPINFO 構造体を指し、 PNRPINFO 構造体の特定のパラメーターを設定する必要があります。 詳細については、PNRPINFO 構造体の次の説明を参照してください。

PNRPINFO 構造体

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

Dwsize

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

lpwszIdentity

予約済み。 NULL である必要があります。

nMaxResolve

要求された解決数を指定します。

dwTimeout

応答を待機するために要求されたタイムアウト期間を指定します。 既定値は 30 秒です。 最大は 600 秒 (10 分) です。

dwLifetime

予約済み。ゼロ (0) にする必要があります。

enResolveCriteria

使用できる値のいずれかである必要があります。 既定値は PNRP_RESOLVE_CRITERIA_NON_CURRENT_PROCESS_PEER_NAME です。 有効な値は 、PNRP_RESOLVE_CRITERIAによって指定されます。

dwFlags

ゼロ (0) または PNRPINFO_HINTにする必要があります。 既定値は 0 です。

saHint

ヒントの IP アドレスを指定します。 ヒントは、最も近いピア名を見つけようとするときに使用されます。 ヒントの形式は IPv6 アドレスです。 最も近いピア名を検索するときに saHint が指定されていない場合は、代わりにローカル コンピューターの IPv6 アドレスが使用されます。 dwFlags が設定されていない場合、このメンバーは無視されます。

enNameState

予約済み。ゼロ (0) にする必要があります。

dwControlFlags

PNRP では、次のLUP_RETURN_* フラグがサポートされています。

説明
LUP_RETURN_NAME 名前とコンテキストを返します。
LUP_RETURN_COMMENT 名前に関連付けられたコメントを返します。
LUP_RETURN_ADDR 名前に関連付けられているアドレスを返します。

 

ネットワーク クラウドの列挙

lpqsRestrictions

クラウドを列挙する場合、lpqsRestrictions パラメーターが参照する LPWSAQUERYSET 構造体には、次の値が含まれている必要があります。

Dwsize

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

lpszServiceInstanceName

NULL にする必要があります。

lpServiceClassID

SVCID_PNRPCLOUDする必要があります。

lpVersion

予約済み。 NULL である必要があります。

lpszComment

予約済み。 NULL である必要があります。

dwNameSpace

NS_PNRPCLOUDする必要があります。

lpNSProviderID

NS_PROVIDER_PNRPCLOUDまたは NULL である必要があります。

lpszContext

予約済み。 NULL である必要があります。

dwNumberOfProtocols

予約済み。ゼロ (0) にする必要があります。

lpszQueryString

予約済み。 NULL である必要があります。

dwNumberOfCsAddrs

予約済み。ゼロ (0) にする必要があります。

lpcsaBuffer

予約済み。 NULL である必要があります。

dwOutputFlags

予約済み。ゼロ (0) にする必要があります。

lpBlob

PNRPCLOUDINFO 構造体を指す BLOB 構造体へのポインター。 lpBlobNULL の場合、すべてのクラウドが列挙されます。

PNRPCLOUDINFO 構造体

クラウドを列挙するときは、 PNRPCLOUDINFO 構造体の次のメンバーを設定する必要があります。

Dwsize

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

クラウド

検索結果のフィルター処理に使用できる条件を指定する構造体を指します。 Cloud.Scope メンバーは、PNRP_SCOPE_ANYPNRP_GLOBAL_SCOPE、PNRP_SITE_LOCAL_SCOPE、またはPNRP_LINK_LOCAL_SCOPEできます。 PNRP_SCOPE_ANYを指定すると、すべてのクラウドが返されます。 それ以外の場合は、 Cloud.Scope に一致するクラウドのみが返されます。

enCloudState

予約済み。ゼロ (0) にする必要があります。

dwControlFlags

PNRP では、次のLUP_RETURN_* フラグがサポートされています。

説明
LUP_RETURN_NAME 名前とコンテキストを返します。
LUP_RETURN_BLOB このクラウドに関連付けられている BLOB を 返します。

 

PNRP と BLOB

PNRP と WSALookupServiceEnd

PNRP と WSALookupServiceNext

PNRP と WSANSPIoctl

PNRP と WSAQUERYSET

PNRPCLOUDINFO

PNRPINFO

PNRP NSP エラー コード