WSCEnumProtocols

WSCEnumProtocols 関数は、利用可能なトランスポートプロトコルに関する情報を取得する。

WSCEnumProtocols lpiProtocols, lpProtocolBuffer, lpdwBufferLength, lpErrno

lpiProtocols : [var] iProtocol 値の **NULL** 終端配列。この引数は省略可能で、NULL にするとすべての利用可能プロトコルの情報が返される。そうでない場合は配列に列挙されたプロトコルのみ情報が取得される。
lpProtocolBuffer : [var] WSAPROTOCOL_INFOW 構造体を格納するバッファへのポインタ。
lpdwBufferLength : [var] 入力時は **WSCEnumProtocols** に渡す lpProtocolBuffer バッファのサイズ (バイト単位)。出力時は、要求した全情報を取得するために **WSCEnumProtocols** に渡すべき最小バッファサイズ (バイト単位)。
lpErrno : [var] エラーコードへのポインタ。

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

解説

WSCEnumProtocols 関数は、利用可能なトランスポートプロトコルに関する情報を取得する。

[戻り値]
エラーがない場合、**WSCEnumProtocols** は報告対象のプロトコル数を返す。そうでない場合は SOCKET_ERROR
を返し、lpErrno に特定のエラーコードが格納される。
このドキュメントは省略されている。

[備考]
**WSCEnumProtocols**
関数は、ローカルコンピュータにインストールされたトランスポートプロトコルの集合に関する情報を取得するために使う。この関数は API 相当の
WSAEnumProtocols とは異なり、インストール済みすべてのプロトコルの WSAPROTOCOL_INFOW
構造体を返す。これには、Ws2_32.dll に対して WSAEnumProtocols の結果バッファには返さないことを示すため
**WSAPROTOCOL_INFOW** の **dwProviderFlags** に **PFL_HIDDEN**
を立てたプロバイダや、chain 長が 0 のダミー LSP プロバイダも含まれる。WSAEnumProtocols
はベースプロトコルと、**PFL_HIDDEN** フラグが立たず chain 長が 0
でないプロトコルチェーンしか返さない。**注**: Layered Service Provider は非推奨である。Windows 8
および Windows Server 2012 以降は Windows Filtering Platform
を使うこと。lpiProtocols を使えば取得情報を絞れる。通常は NULL
を渡し、全トランスポートプロトコルの情報を取得する。要求された各プロトコルについて WSAPROTOCOL_INFOW 構造体が
lpProtocolBuffer が指すバッファに格納される。バッファが小さすぎる場合、lpdwBufferLength
が必要サイズで更新される。Winsock SPI
クライアントは十分なバッファを確保して再度呼び出すべきである。**WSCEnumProtocols**
は複数回の呼び出しで分割列挙できない。渡すバッファは必要な全エントリを格納できる大きさでなければならない。これにより関数の複雑さが減り、ローカルコンピュータにインストールされるプロトコル数は通常少ないため問題にならない。構造体がバッファ内に並ぶ順序は、サービスプロバイダが
WS2_32.dll に登録した順、あるいはその後 Winsock アプレットで並び替えられた順と一致する。

情報

プラグイン / モジュール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