次の方法で共有


WSALookupServiceNextA 関数 (winsock2.h)

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

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

構文

INT WSAAPI WSALookupServiceNextA(
  [in]      HANDLE         hLookup,
  [in]      DWORD          dwControlFlags,
  [in, out] LPDWORD        lpdwBufferLength,
  [out]     LPWSAQUERYSETA lpqsResults
);

パラメーター

[in] hLookup

WSALookupServiceBeginを する前の呼び出しから返されたハンドル。

[in] dwControlFlags

操作を制御するフラグのセット。 WSALookupServiceBegin 関数に dwControlFlags パラメーターで渡される値によって、使用可能な条件が決まります。 dwControlFlags パラメーターで WSALookupServiceNext 関数に渡される値は、サービス参照の条件をさらに制限します。

現在、LUP_FLUSHPREVIOUSは、大きすぎる結果セットに対処するための手段として定義されています。 アプリケーションが十分な大きさのバッファーを提供しない (または提供できない) 場合、LUP_FLUSHPREVIOUS設定は、最後の結果セット (大きすぎた) を破棄し、この呼び出しの次のセットに進むようプロバイダーに指示します。

dwControlFlags パラメーターでサポートされる値は、Winsock2.h ヘッダー ファイルで定義されており、次のオプションを組み合わせて使用できます。

意味
LUP_DEEP
0x0001
最初のレベルではなく、深いクエリ。
LUP_CONTAINERS
0x0002
コンテナーのみを返します。
LUP_NOCONTAINERS
0x0004
コンテナーを返さないでください。
LUP_NEAREST
0x0008
可能であれば、結果を距離の順序で返します。 距離のメジャーはプロバイダー固有です。
LUP_RETURN_NAME
0x0010
lpszServiceInstanceName名前を取得します。
LUP_RETURN_TYPE
0x0020
lpServiceClassId型を取得します。
LUP_RETURN_VERSION
0x0040
lpVersionとしてバージョン 取得します。
LUP_RETURN_COMMENT
0x0080
lpszCommentとしてコメント 取得します。
LUP_RETURN_ADDR
0x0100
lpcsaBufferアドレスを取得します。
LUP_RETURN_BLOB
0x0200
lpBlobとしてプライベート データ 取得します。
LUP_RETURN_ALIASES
0x0400
使用可能なエイリアス情報は、WSALookupServiceNextの連続する呼び出しで返され、返される各エイリアスにはRESULT_IS_ALIAS フラグが設定されます。
LUP_RETURN_QUERY_STRING
0x0800
要求に使用されるクエリ文字列を取得します。
LUP_RETURN_ALL
0x0FF0
すべてのLUP_RETURN_* 値を取得するフラグのセット。
LUP_FLUSHPREVIOUS
0x1000
WSALookupServiceNextの dwControlFlags パラメーター 値として使用されます。 このフラグを設定すると、指定したバッファーに対して大きすぎる最後の結果セットを破棄し、次の結果セットに進むようプロバイダーに指示します。
LUP_FLUSHCACHE
0x2000
プロバイダーが情報をキャッシュしている場合は、キャッシュを無視し、名前空間自体にクエリを実行します。
LUP_RES_SERVICE
0x8000
これは、素応答が構造体のリモート部分とローカル部分のどちらにあるかを示 CSADDR_INFO。 どちらの場合も、もう 1 つの部分を使用できる必要があります。

[in, out] lpdwBufferLength

入力時に、lpqsResults指すバッファーに含まれるバイト数。 出力時に、関数が失敗し、エラーが WSAEFAULT場合、レコードを取得するために lpqsResults に渡す最小バイト数が含まれます。

[out] lpqsResults

メモリ ブロックへのポインター。このポインターには、WSAQUERYSET 構造体に 1 つの結果セットが含まれます。

戻り値

操作が成功した場合、戻り値は 0 です。 それ以外の場合は、SOCKET_ERROR値が返され、WSAGetLastError呼び出すことによって特定のエラー番号を取得できます。

エラー コード 意味
WSA_E_CANCELLED
この呼び出し 処理中に WSALookupServiceEnd の呼び出しが行われました。 呼び出しが取り消されました。 lpqsResults バッファー内のデータは未定義です。 Windows ソケット バージョン 2 では、WSAECANCELLED (10103) と WSA_E_CANCELLED (10111) に対して競合するエラー コードが定義されています。 エラー コード WSAECANCELLED は将来のバージョンで削除され、WSA_E_CANCELLEDのみが残ります。 ただし、Windows ソケット バージョン 2 の場合、アプリケーションは WSAECANCELLED と WSA_E_CANCELLED の両方をチェックして、いずれかを使用する名前空間プロバイダーとの互換性を最大限に高める必要があります。
WSA_E_NO_MORE
使用できるデータはこれ以上ありません。 Windows ソケット バージョン 2 では、WSAENOMORE (10102) と WSA_E_NO_MORE (10110) に対して競合するエラー コードが定義されています。 エラー コード WSAENOMORE は将来のバージョンで削除され、WSA_E_NO_MOREのみが残ります。 ただし、Windows ソケット バージョン 2 の場合、アプリケーションは WSAENOMORE と WSA_E_NO_MORE の両方をチェックして、いずれか 1 つを使用する名前空間プロバイダーとの互換性を最大限に高める必要があります。
WSAEFAULT の
lpqsResults バッファーが小さすぎて、WSAQUERYSET セットを含めできませんでした。
WSAEINVAL の
1 つ以上の必須パラメーターが無効であるか、不足していました。
WSA_INVALID_HANDLE
指定されたルックアップ ハンドルが無効です。
WSANOTINITIALIZED の
WS2_32.DLLが初期化されていません。 アプリケーションは、Windows ソケット関数を呼び出す前 WSAStartup を最初に呼び出す必要があります。
WSANO_DATA
データベースに名前が見つかりましたが、指定された制限に一致するデータが見つかりませんでした。
WSA_NOT_ENOUGH_MEMORY
操作を実行するためのメモリが不足していました。

備考

この関数で指定された dwControlFlags パラメーターと、WSALookupServiceBegin 指定されたパラメーターは、組み合わせの目的で制限として扱われます。 制限は、WSALookupServiceBegin 時刻と WSALookupServiceNext 時刻の制限の間で組み合わされます。 したがって、WSALookupServiceNext のフラグは、WSALookupServiceBegin で要求されたデータの量を超えて返されるデータの量を増やすことは決してできませんが、フラグの数を増やしたり減らしたりするのはエラーではありません。 WSALookupServiceNext 指定されたフラグは、その呼び出しにのみ適用

dwControlFlags LUP_FLUSHPREVIOUS とLUP_RES_SERVICE は、(制限フラグではなく動作フラグであるため) 結合された制限規則の例外です。 これらのフラグ WSALookupServiceNext で使用されている場合、WSALookupServiceBeginでの同じフラグの設定 関係なく、定義された効果があります。

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

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

WSALookupServiceNext 関数が WSAEFAULTエラーで失敗した場合、これは、lpqsResults パラメーターが指すバッファーが小さすぎてクエリ結果を格納できなかったことを示します。 WSAQUERYSET の新しいバッファーには、lpdwBufferLength パラメーターが指す値で指定されたサイズを指定する必要があります。 WSAQUERYSET のこの新しいバッファーでは、WSALookupServiceNext 関数を再度呼び出す前に、WSAQUERYSET のメンバーの一部を指定する必要があります。 少なくとも、WSAQUERYSETdwSize メンバーをバッファーの新しいサイズに設定する必要があります。

クエリ結果の

次の表は、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 Phone 8:WSALookupServiceNextW 関数は、Windows Phone 8 以降の Windows Phone ストア アプリでサポートされています。

Windows 8.1 および windows Server 2012 R2: windows 8.1、Windows Server 2012 R2 以降の Windows ストア アプリでは、wsaLookupServiceNextW 関数 がサポートされています。

手記

winsock2.h ヘッダーは、UNICODE プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして WSALookupServiceNext を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows 8.1、Windows Vista [デスクトップ アプリ |UWP アプリ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリ |UWP アプリ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winsock2.h
ライブラリ Ws2_32.lib
DLL Ws2_32.dll

関連項目

Bluetooth と WSALookupServiceNext

WSALookupServiceBegin の

WSALookupServiceEnd を する

WSAQUERYSET の

Winsock Functions

Winsock リファレンス