LPNSPLOOKUPSERVICENEXT コールバック関数 (ws2spi.h)
NSPLookupServiceNext 関数は、要求されたサービス情報を取得するために、NSPLookupServiceBegin の以前の呼び出しからハンドルを取得した後に呼び出されます。
プロバイダーは、lpqsResults バッファーに WSAQUERYSET 構造体を渡します。 クライアントは、すべての WSAQUERYSET が返されたことを示すWSA_E_NOMOREを返すまで、この関数を呼び出す必要があります。
構文
LPNSPLOOKUPSERVICENEXT Lpnsplookupservicenext;
INT Lpnsplookupservicenext(
[in] HANDLE hLookup,
[in] DWORD dwControlFlags,
[in, out] LPDWORD lpdwBufferLength,
[out] LPWSAQUERYSETW lpqsResults
)
{...}
パラメーター
[in] hLookup
WSALookupServiceBegin の前回の呼び出しから返されたハンドル。
[in] dwControlFlags
次の操作を制御するために使用されるフラグ。 現在、大きすぎる結果セットを処理する手段として定義されているのは、 LUP_FLUSHPREVIOUS のみです。 アプリケーションで十分な大きさのバッファーを指定できない場合は、 LUP_FLUSHPREVIOUS を設定すると、最後の結果セット (大きすぎた) を破棄し、この呼び出しの次のセットに移動するようにプロバイダーに指示されます。
[in, out] lpdwBufferLength
lpqsResults が指すバッファーに含まれる、入力時のサイズ (バイト単位)。 出力時に、関数が失敗し、エラーが WSAEFAULT である場合、 lpqsResults がレコードを取得するために渡す最小サイズ (バイト単位) が含まれます。
[out] lpqsResults
WSAQUERYSET 構造体に 1 つの結果セットが含まれるメモリ ブロックへのポインター。
戻り値
ルーチンが成功した場合、関数は NO_ERROR (ゼロ) を返す必要があります。 ルーチン が 失敗し、 WSASetLastError を使用して適切なエラー コードを設定する必要がある場合は、SOCKET_ERROR (-1) を返す必要があります。
エラー コード | 意味 |
---|---|
この呼び出しがまだ処理中に NSPLookupServiceEnd の呼び出しが行われました。 呼び出しはキャンセルされました。 lpqsResults バッファー内のデータは未定義です。
Windows ソケット 2 では、 WSAECANCELLED (10103) と WSA_E_CANCELLED (10111) に対して競合するエラー コードが定義されています。エラー コード WSAECANCELLED は将来のバージョンで削除され、WSA_E_CANCELLEDのみが残ります。 名前空間プロバイダーは、 WSA_E_CANCELLED エラー コードを使用して、可能な限り幅広いアプリケーションとの互換性を維持する必要があります。 |
|
これ以上使用できるデータはありません。
Windows ソケット 2 では、 WSAENOMORE (10102) と WSA_E_NO_MORE (10110) に対して競合するエラー コードが定義されています。エラー コード WSAENOMORE は将来のバージョンで削除され、WSA_E_NO_MOREのみが残ります。 名前空間プロバイダーは、 WSA_E_NO_MORE エラー コードを使用して、可能な限り幅広いアプリケーションとの互換性を維持する必要があります。 |
|
指定された参照ハンドルが無効です。 | |
この操作を実行するのに十分なメモリがありません。 | |
lpqsResults バッファーが小さすぎて WSAQUERYSET セットが含まれなかった。 | |
このプロバイダーに対して 1 つ以上のパラメーターが無効であるか、存在しません。 | |
この操作はサポートされていません。 名前空間プロバイダーがこの関数を実装していない場合、このエラーが返されます。 | |
データベースで名前が見つかりましたが、指定された制限に一致するデータが見つかりませんでした。 | |
サービスが不明です。 指定した名前空間にサービスが見つかりません。 |
注釈
この関数で指定された dwControlFlags と NSPLookupServiceBegin の時点で指定された dwControlFlags は、組み合わせの目的で "制限" として処理されます。 制限は、 NSPLookupServiceBegin 時刻の制限と NSPLookupServiceNext 時刻の制限の間で組み合わされます。 したがって、NSPLookupServiceNext のフラグは、NSPLookupServiceBegin で要求されたデータを超えて返されるデータの量を増やすことは決してできませんが、多かれ少なかれフラグを指定するエラーではありません。 指定された NSPLookupServiceNext で指定されたフラグは、その呼び出しにのみ適用されます。
dwControlFlagsLUP_FLUSHPREVIOUSとLUP_RES_SERVICEは、組み合わされた制限ルールの例外です (これらは "制限" フラグではなく動作フラグであるため)。 NSPLookupServiceNext でいずれかのフラグが使用されている場合、NSPLookupServiceBegin での同じフラグの設定に関係なく、それらのフラグは定義された効果を持ちます。
たとえば、LUP_RETURN_VERSIONが NSPLookupServiceBegin で指定されている場合、サービス プロバイダーはバージョンを含むレコードを取得します。 LUP_RETURN_VERSIONが NSPLookupServiceNext で指定されていない場合、返される情報にはバージョンは含まれません。使用可能な場合でも、 エラーは生成されません。
また、たとえば、 LUP_RETURN_BLOB が NSPLookupServiceBegin で指定されていないが、 NSPLookupServiceNext で指定されている場合、返される情報にはプライベート データは含まれません。 エラーは生成されません。
クエリ結果
次の表に 、WSAQUERYSET の一覧と、 WSAQUERYSET 構造体でのクエリ結果の表現方法について説明します。 詳細については、「 クエリ関連のデータ構造」を参照してください。WSAQUERYSET メンバー名 | 結果の解釈 |
---|---|
**Dwsize** | sizeof(WSAQUERYSET) に設定されます。 これは、バージョン管理メカニズムとして使用されます。 |
**dwOutputFlags** | **RESULT_IS_ALIAS** フラグは、これがエイリアスの結果であることを示します。 |
**lpszServiceInstanceName** | サービス名を含む文字列を参照します。 |
**lpServiceClassId** | サービス クラスに対応する GUID。 |
**lpVersion** | 特定のサービス インスタンスのバージョン番号を参照します。 |
**lpszComment** | 省略可能。 サービス インスタンスによって提供されるコメント文字列。 |
**dwNameSpace** | サービス インスタンスが見つかった名前空間。 |
**lpNSProviderId** | このクエリ結果を提供した特定の名前空間プロバイダーを識別します。 |
**lpszContext** | サービスが配置されている階層型名前空間内のコンテキスト ポイントを指定します。 |
**dwNumberOfProtocols** | 結果の場合は未定義です。 |
**lpafpProtocols** | 結果では未定義です。必要なすべてのプロトコル情報は 、CSADDR_INFO 構造体にあります。 |
**lpszQueryString** | dwControlFlags に **LUP_RETURN_QUERY_STRING** が含まれている場合、このメンバーは元のクエリで指定された **lpszServiceInstanceName** の未解析の剰余を返します。 たとえば、ホスト名とそのホスト内のファイル パスを指定する階層名によってサービスを識別する名前空間では、返されるアドレスがホスト アドレスであり、未解析の残りがファイル パスである可能性があります。 **lpszServiceInstanceName** が完全に解析され、**LUP_RETURN_QUERY_STRING** が使用されている場合、このメンバーは null または長さ 0 の文字列を指します。 |
**dwNumberOfCsAddrs** | 構造体の配列内の要素の数 CSADDR_INFO 示します。 |
**lpcsaBuffer** | 各要素内に 1 つの完全なトランスポート アドレスが含まれる、 CSADDR_INFO 構造体の配列へのポインター。 |
**lpBlob** | 省略可能。 プロバイダー固有のエンティティへのポインター。 |
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 Professional [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows 2000 Server [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | ws2spi.h |
こちらもご覧ください
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示