LPNSPV2LOOKUPSERVICENEXTEXコールバック関数 (ws2spi.h)
NSPv2LookupServiceNextEx 関数は、名前空間バージョン 2 サービス プロバイダーから要求された情報を取得するために、NSPv2LookupServiceBegin への以前の呼び出しからハンドルを取得した後に呼び出されます。
構文
LPNSPV2LOOKUPSERVICENEXTEX Lpnspv2lookupservicenextex;
void Lpnspv2lookupservicenextex(
[in] HANDLE hAsyncCall,
[in] HANDLE hLookup,
[in] DWORD dwControlFlags,
[in, out] LPDWORD lpdwBufferLength,
[out] LPWSAQUERYSET2W lpqsResults
)
{...}
パラメーター
[in] hAsyncCall
NSPv2LookupServiceBegin 前の呼び出しから返されたハンドル 非同期呼び出しに使用されます。
[in] hLookup
NSPv2LookupServiceBeginを
[in] dwControlFlags
次の操作を制御するために使用されるフラグ。 現在、LUP_FLUSHPREVIOUS のみが、大きすぎる結果セットを処理する手段として定義されています。 アプリケーションが十分な大きさのバッファーを提供できない場合、LUP_FLUSHPREVIOUS 設定は、最後の結果セット (大きすぎた) を破棄し、この呼び出しの次のセットに移動するようにプロバイダーに指示します。
[in, out] lpdwBufferLength
lpqsResults
[out] lpqsResults
返されると、WSAQUERYSET2 構造体に 1 つの結果セットが格納されるメモリ ブロックへのポインター。
戻り値
ルーチンが成功した場合、関数は NO_ERROR (ゼロ) を返す必要があります。 ルーチンが失敗し、WSASetLastErrorを使用して適切なエラー コードを設定する必要がある場合は、
エラー コード | 意味 |
---|---|
この呼び出しがまだ処理中 NSPv2LookupServiceEnd の呼び出しが行われました。 呼び出しが取り消されました。
lpqsResults バッファー内のデータは未定義です。
Windows ソケット 2 では、WSAECANCELLED (10103) と |
|
使用できるデータはこれ以上ありません。
Windows ソケット 2 では、WSAENOMORE (10102) と |
|
|
lpqsResults バッファーが小さすぎて、WSAQUERYSET セットを含めできませんでした。 |
|
このプロバイダーに対して 1 つ以上のパラメーターが無効であるか、不足しています。 |
指定された参照ハンドルが無効です。 | |
データベース内で名前が見つかりましたが、指定された制限に一致するデータが見つかりませんでした。 | |
サービスが不明です。 指定した名前空間にサービスが見つかりません。 | |
この操作を実行するのに十分なメモリがありません。 |
備考
NSPv2LookupServiceNextEx 関数は、Windows Vista 以降で使用できる名前空間サービス プロバイダー バージョン 2 (NSPv2) アーキテクチャの一部として使用されます。
Windows Vista および Windows Server 2008 では、NSPv2LookupServiceNextEx 関数は、NS_EMAIL名前空間プロバイダーに対する操作にのみ使用できます。
プロバイダーは、lpqsResults バッファーに WSAQUERYSET2 構造体を渡します。 クライアントは、すべての WSAQUERYSET2 構造体が返されたことを示す WSA_E_NOMOREを返すまで、NSPv2LookupServiceNextEx 関数を呼び出す必要があります。
dwControlFlags この関数で指定され、NSPv2LookupServiceBegin の時点で指定されたものは、組み合わせのために "制限" として処理されます。 この制限は、NSPv2LookupServiceBegin 時刻の制限と、NSPv2LookupServiceNextEx 時刻の制限との間で組み合わされます。 したがって、NSPv2LookupServiceNextEx
dwControlFlags
たとえば、
また、たとえば、
NSPv2LookupServiceNextEx 関数は、通常、少なくとも 2 回呼び出されます。 lpqsResults パラメーターが指す WSAQUERYSET2 を受け取るために必要なバッファーのサイズを初めて取得し、2 回目は実際のクエリ結果セットを取得します。 最初の呼び出しでは、NSPv2 プロバイダーは、WSAQUERYSET2 結果に必要なサイズを返す必要があります。
返される lpqsResults パラメーターによって指される WSAQUERYSET2 構造体は、同じプロセス コンテキストでのみ役立ちます。これは、WSAQUERYSET2 構造体内のいくつかのメンバーに、返される実際のデータへのポインターが含まれるためです。 クエリ結果を (RPC などを使用して) 別のプロセスに渡す必要がある場合は、lpqsResults パラメーターが指す WSAQUERYSET2 構造体で返されたデータをシリアル化してマーシャリングし、WSAQUERYSET2 構造体のメンバーが指すデータを含める必要があります。 データは、プロセスの境界を越えて渡すことができる形式でシリアル化する必要があります。 データへのポインターのみが渡され、実際のデータが他のプロセスに使用できなくなるため、WSAQUERYSET2 構造体のコピーを渡すだけでは不十分です。
クエリ結果の
次の表に、WSAQUERYSET2 の一覧と、**WSAQUERYSET2** 構造体でのクエリ結果の表現方法について説明します。 詳細については、「Query-Related データ構造の」を参照してください。メンバー名WSAQUERYSET2 | 結果の解釈 |
---|---|
**dwSize** | WSAQUERYSET2 構造体のサイズ (バイト単位)。 これはバージョン管理メカニズムとして使用されます。 |
**lpszServiceInstanceName** | サービス名を含む文字列。 |
**lpVersion** | 特定のサービス インスタンスのバージョン番号を参照します。 |
**lpszComment** | サービス インスタンスによって提供されるコメント文字列。 このメンバーは、NSPv2 サービス プロバイダーの要件に応じて省略可能です。 |
**dwNameSpace** | 名前またはサービス インスタンスが見つかった名前空間識別子。 |
**lpNSProviderId** | このクエリ結果を提供した特定の名前空間プロバイダー。 |
**lpszContext** | サービスが配置されている階層型名前空間内のコンテキスト ポイント。 |
**dwNumberOfProtocols** | このメンバーは結果に対して未定義です。 |
**lpafpProtocols** | このメンバーは結果に対して未定義です。 必要なすべてのプロトコル情報は、CSADDR_INFO 構造体にあります。 |
**lpszQueryString** | dwControlFlags |
**dwNumberOfCsAddrs** | CSADDR_INFO 構造体の配列内の要素の数。 |
**lpcsaBuffer** | 各要素内に 1 つの完全なトランスポート アドレスが含まれる、CSADDR_INFO 構造体の配列へのポインター。 |
**dwOutputFlags** | **RESULT_IS_ALIAS** フラグは、これがエイリアスの結果であることを示します。 |
**lpBlob** | プロバイダー固有のエンティティへのポインター。 このメンバーは、NSPv2 サービス プロバイダーの要件に応じて省略可能です。 |
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされる最小サーバー | Windows Server 2008 [デスクトップ アプリのみ] |
ターゲット プラットフォーム の |
ウィンドウズ |
ヘッダー | ws2spi.h |
関連項目
NSPv2Cleanup を
NSPv2LookupServiceBegin を
NSPv2LookupServiceEnd を
NSPv2SetServiceEx を
NSPv2Startup を
WSASetLastError の