次の方法で共有


LPNSPLOOKUPSERVICENEXT コールバック関数 (ws2spi.h)

NSPLookupServiceNext 関数は、要求されたサービス情報を取得するために、NSPLookupServiceBegin への以前の呼び出しからハンドルを取得した後に呼び出されます。

プロバイダーは、lpqsResults バッファー内の WSAQUERYSET 構造体を渡します。 クライアントは、WSA_E_NOMOREを返すまでこの関数を呼び出す必要があります。これは、WSAQUERYSET のすべての が返されたことを示します。

構文

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) を返す必要があります。

エラー コード 意味
WSA_E_CANCELLED
この呼び出し 処理中に NSPLookupServiceEnd の呼び出しが行われました。 呼び出しが取り消されました。 lpqsResults バッファー内のデータは未定義です。

Windows ソケット 2 では、WSAECANCELLED (10103) と WSA_E_CANCELLED (10111) に対して競合するエラー コードが定義されています。WSAECANCELLED エラー コードは今後のバージョンで削除され、WSA_E_CANCELLEDのみが残ります。 名前空間プロバイダーは、WSA_E_CANCELLED エラー コードを使用して、可能な限り幅広いアプリケーションとの互換性を維持する必要があります。

WSA_E_NO_MORE
使用できるデータはこれ以上ありません。

Windows ソケット 2 では、WSAENOMORE (10102) と WSA_E_NO_MORE (10110) に対して競合するエラー コードが定義されています。WSAENOMORE エラー コードは将来のバージョンで削除され、WSA_E_NO_MOREのみが残ります。 名前空間プロバイダーは、WSA_E_NO_MORE エラー コードを使用して、可能な限り幅広いアプリケーションとの互換性を維持する必要があります。

WSA_INVALID_HANDLE
指定された参照ハンドルが無効です。
WSA_NOT_ENOUGH_MEMORY
この操作を実行するのに十分なメモリがありません。
WSAEFAULT の
lpqsResults バッファーが小さすぎて、WSAQUERYSET セットを含めできませんでした。
WSAEINVAL の
このプロバイダーに対して 1 つ以上のパラメーターが無効であるか、不足しています。
WSAEOPNOTSUPP の
操作はサポートされていません。 このエラーは、名前空間プロバイダーがこの関数を実装していない場合に返されます。
WSANO_DATA
データベース内で名前が見つかりましたが、指定された制限に一致するデータが見つかりませんでした。
WSASERVICE_NOT_FOUND
サービスが不明です。 指定した名前空間にサービスが見つかりません。

備考

dwControlFlags この関数で指定され、NSPLookupServiceBegin の時点で指定されたものは、組み合わせのために "制限" として処理されます。 制限は、NSPLookupServiceBegin 時刻と NSPLookupServiceNext 時刻 制限が組み合わされます。 したがって、NSPLookupServiceNext のフラグは、NSPLookupServiceBegin で要求されたデータの量を超えて返されるデータの量を増やすことは決してできませんが、フラグを多くまたは少なく指定するエラーではありません。 NSPLookupServiceNext 指定されたフラグは、その呼び出しにのみ適用

dwControlFlagsLUP_FLUSHPREVIOUSLUP_RES_SERVICE は、結合された制限規則の例外です (これらは "制限" フラグではなく動作フラグであるため)。 NSPLookupServiceNextでいずれかのフラグ 使用する場合、NSPLookupServiceBeginでの同じフラグの設定 関係なく、定義された効果があります。

たとえば、NSPLookupServiceBegin LUP_RETURN_VERSION が指定されている場合、サービス プロバイダーはバージョンを含むレコードを取得します。 LUP_RETURN_VERSION が NSPLookupServiceNext指定されていない場合、返される情報にはバージョンは含まれません。ただし、使用可能な場合でも、 エラーは生成されません。

たとえば、LUP_RETURN_BLOB が NSPLookupServiceBeginで指定されていないが、NSPLookupServiceNextで指定されている場合、返される情報にはプライベート データは含まれません。 エラーは生成されません。

クエリ結果の

次の表に、WSAQUERYSET 一覧を示し、WSAQUERYSET 構造体でクエリ結果を表す方法について説明します。 詳細については、「Query-Related データ構造の」を参照してください。
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 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー ws2spi.h

関連項目

CSADDR_INFO

NSPLookupServiceBegin を する

NSPLookupServiceEnd を する

NSP_ROUTINE

WSAQUERYSET の

WSASetLastError の