WSALookupServiceNextW

WSALookupServiceNext 関数は、WSALookupServiceBegin の呼び出しで取得したハンドルを使って、要求されたサービス情報を取得するために呼び出される。(Unicode)

WSALookupServiceNextW hLookup, dwControlFlags, lpdwBufferLength, lpqsResults

hLookup : [intptr] WSALookupServiceBegin への直前の呼び出しで返されたハンドル。
dwControlFlags : [int] 操作を制御するフラグの集合。指定可能な基準は WSALookupServiceBegin 呼び出し時の dwControlFlags で決まる。WSALookupServiceNext で渡される dwControlFlags はサービス検索条件をさらに絞り込む。現在、結果セットが大きすぎる場合に対処する手段として LUP_FLUSHPREVIOUS が定義されている。アプリケーションが十分な大きさのバッファを用意できない場合、LUP_FLUSHPREVIOUS を指定するとプロバイダは直前の (大きすぎた) 結果セットを破棄して次の結果セットへ進む。指定可能な値は Winsock2.h に定義されており、以下のオプションを組み合わせて指定できる。
lpdwBufferLength : [var] 入力時は lpqsResults が指すバッファのバイト数。出力時、関数が WSAEFAULT で失敗したときはレコード取得のために lpqsResults に渡すべき最小バイト数が格納される。
lpqsResults : [var] メモリブロックへのポインタ。戻り時に WSAQUERYSET 構造体に格納された 1 つの結果セットを含む。

(プラグイン / モジュール : ws2_32.dll)

解説

WSALookupServiceNext 関数は、WSALookupServiceBegin
の呼び出しで取得したハンドルを使って、要求されたサービス情報を取得するために呼び出される。(Unicode)

[戻り値]
操作が成功した場合の戻り値はゼロ。そうでない場合は SOCKET_ERROR が返され、WSAGetLastError
を呼び出すことで特定のエラー番号を取得できる。
このドキュメントは省略されている。

[備考]
本関数と WSALookupServiceBegin で指定された dwControlFlags
は組み合わせのための制約として扱われる。両者の制限は組み合わされるため、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 が指すバッファがクエリ結果を格納するには小さすぎたことを意味する。lpdwBufferLength
が示す大きさの新しい WSAQUERYSET 用バッファを用意すべきである。新しいバッファでは、WSALookupServiceNext
を再度呼び出す前にいくつかの WSAQUERYSET メンバを設定する必要がある。少なくとも dwSize
メンバには新しいバッファサイズを設定しなければならない。クエリ結果: クエリ結果が WSAQUERYSET
構造体にどのように表現されるかは次表に示す。
このドキュメントは省略されている。

情報

プラグイン / モジュールws2_32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の ws2_32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_ws2_32_gen2.hs