WSCGetApplicationCategory

アプリケーションに関連付けられた LSP (Layered Service Provider) カテゴリを取得する。

WSCGetApplicationCategory Path, PathLength, Extra, ExtraLength, pPermittedLspCategories, lpErrno

Path : [wstr] アプリケーションの実行イメージへのロードパスを含む Unicode 文字列へのポインタ。通常のパス解決規則に従い、%SystemRoot% などの埋め込み環境変数文字列を含めることもできる。
PathLength : [int] Path 引数の長さ (文字数)。終端の **NULL** は含まない。
Extra : [wstr] Path 引数で指定されたアプリケーション起動時のコマンドライン引数を表す Unicode 文字列へのポインタ。Extra 引数は、同じコマンドラインで起動される複数の異なるアプリケーションインスタンスを区別するために使う。Svchost.exe や Rundll32.exe の異なるインスタンスに対して異なる分類を行うためのものである。Path のみで十分でコマンドライン引数が不要な場合、Extra は **NULL** にすべきである。
ExtraLength : [int] Extra 引数の長さ (文字数)。終端の **NULL** は含まない。
pPermittedLspCategories : [var] このアプリケーションの全インスタンスで許可される LSP カテゴリを表す DWORD 値へのポインタ。アプリケーションは Path と Extra の組み合わせで識別される。
lpErrno : [var] 関数が失敗した場合のエラーコードへのポインタ。

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

解説

アプリケーションに関連付けられた LSP (Layered Service Provider) カテゴリを取得する。

[戻り値]
エラーがない場合、**WSCGetApplicationCategory** は **ERROR_SUCCESS** (0)
を返す。そうでない場合は **SOCKET_ERROR** を返し、lpErrno に特定のエラーコードが格納される。
このドキュメントは省略されている。

[備考]
**WSCGetApplicationCategory** は、アプリケーションインスタンスに関連付けられた LSP
カテゴリフラグを取得するために使う。アプリケーションはそのコンテキスト内でどの LSP 挙動が許容されるか判断できる。許可する LSP
カテゴリを指定することで、その挙動を実装する Layered Service Provider のみがロードされるようにできる。Extra
引数は、同じ実行ファイル内でホストされる異なるアプリケーションやサービスをコマンドラインで区別する必要があるときに必須である。Svchost.exe
と Rundll32.exe はその代表例で、SvcHost.exe の **-k <svcinstance>**
スイッチでプロセスインスタンスを定義する。サービスではサービス名だけでは不十分で、Winsock カタログはプロセスにグローバルであり、1
プロセスが複数サービスをホストすることがあるためである。Winsock は最初の WSAStartup
呼び出し時にアプリケーションの識別と許可 LSP カテゴリの取得を行う。これがそのアプリケーションインスタンスの生存期間中の許可 LSP
カテゴリ集合となる。以降の変更は次のインスタンスまで反映されず、インスタンスの生存期間中に許可カテゴリは変化しない。Winsock 2
はレイヤードプロトコルに対応する。レイヤードプロトコルは高レベル通信機能のみを実装し、実際のデータ交換は下位のトランスポートスタックに依存する。例として、認証と暗号化合意のためにプロトコルを追加するセキュリティ層が挙げられる。このようなセキュリティプロトコルは
TCP や SPX など下位の信頼できるトランスポートを必要とする。ベースプロトコルは TCP や SPX
のように単独で通信可能なプロトコル、レイヤードプロトコルは単独では使えないプロトコルである。LSP 初期化時、LSP は Winsock
SPI 関数の関数ポインタを用意する。IFS を実装する LSP は自分で実装するか直下層のポインタをそのまま返すかを選択できる。非
IFS LSP は独自ハンドルを提供するので全 SPI を実装しなければならない。LSP は SPI
の部分集合に特有の追加処理を行うのが通常である。実装している SPI の部分集合と追加処理の性質に基づいて LSP
カテゴリを定義できる。LSP と Winsock ソケットを使うアプリケーションを分類することで、実行時に特定プロセスで LSP
を関与させるかを選択的に決められる。Windows Vista 以降では、LSP は Winsock
呼び出しやデータとの相互作用のしかたに基づいて分類できる。LSP カテゴリは Winsock SPI
関数部分集合に対する識別可能な挙動グループである。たとえば HTTP コンテンツフィルタはデータインスペクタ
(LSP_INSPECTOR) に分類される。LSP_INSPECTOR はデータ転送 SPI
関数の引数を検査するが変更はしない。アプリケーションは LSP のカテゴリをクエリし、許可カテゴリ集合に基づいて LSP
を読み込まない選択ができる。
このドキュメントは省略されている。

情報

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