PNRP と WSALookupServiceBegin
PNRP では 、WSALookupServiceBegin 関数を使用して、アプリケーションが次の操作を実行できるようにするプロセスを開始します。
いずれかの関数を実行しようとするクライアントは、 WSALookupServiceBegin、 WSALookupServiceNext、および WSALookupServiceEnd 関数を 使用します。
WSANSPIoctl を使用すると、ルックアップ サービスを非同期的に使用できます。 ルックアップ サービス関数を非同期的に使用する方法については、「 PNRP と WSANSPIoctl」を参照してください。
ピア名を操作するプロセスは、クラウドの操作とは異なります。 各プロセスについては、このトピックで個別に説明します。
名前の解決
アプリケーションは WSALookupServiceBegin を使用して、別のコンピューターに登録されているピア サービスの IP アドレス、ポート、プロトコルを取得します。 WSALookupServiceBegin 関数を使用して名前解決プロセスを開始し、パラメーターと制限を設定します。 ハンドルが返され、 WSALookupServiceNext と WSANSPIoctl を呼び出すときに使用する必要があります。
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 の場合は、既定値が使用されます。 設定されている場合、 lpBlob は PNRPINFO 構造体を指し、 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 構造体へのポインター。 lpBlob が NULL の場合、すべてのクラウドが列挙されます。
PNRPCLOUDINFO 構造体
クラウドを列挙するときは、 PNRPCLOUDINFO 構造体の次のメンバーを設定する必要があります。
-
Dwsize
-
この構造体のサイズを指定します。
-
クラウド
-
検索結果のフィルター処理に使用できる条件を指定する構造体を指します。 Cloud.Scope メンバーは、PNRP_SCOPE_ANY、PNRP_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 を 返します。 |
関連トピック