EnumProcessModulesEx

指定したフィルタ条件に一致する、指定プロセス内の各モジュールのハンドルを取得する。

EnumProcessModulesEx hProcess, lphModule, cb, lpcbNeeded, dwFilterFlag

hProcess : [intptr] プロセスのハンドル。
lphModule : [intptr] モジュールハンドルのリストを受け取る配列。
cb : [int] lphModule 配列のサイズ(バイト単位)。
lpcbNeeded : [var] lphModule 配列にすべてのモジュールハンドルを格納するために必要なバイト数。
dwFilterFlag : [int] 

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

解説

指定したフィルタ条件に一致する、指定プロセス内の各モジュールのハンドルを取得する。

[戻り値]
関数が成功した場合、戻り値は 0 以外となる。関数が失敗した場合、戻り値は 0 となる。拡張エラー情報を取得するには
GetLastError を呼び出す。

[備考]
EnumProcessModulesEx
関数は主に、別プロセスからモジュール情報を取り出す必要があるデバッガなどのアプリケーション向けに設計されている。対象プロセスのモジュールリストが破損していたり、まだ初期化されていなかったり、関数呼び出し中に
DLL のロードやアンロードによってモジュールリストが変化したりすると、EnumProcessModulesEx
は失敗するか不正確な情報を返す可能性がある。この関数は主に 64 ビットアプリケーション向けである。WOW64 上で動作する 32
ビットアプリケーションから呼び出された場合、dwFilterFlag オプションは無視され、EnumProcessModules
関数と同じ結果を返す。EnumProcessModulesEx
を呼び出した時点でプロセス内にいくつのモジュールが存在するかは予測しにくいため、HMODULE
値の大きな配列を指定するのが望ましい。lphModule
配列がプロセスのすべてのモジュールハンドルを保持するには小さすぎるかどうかを判断するには、lpcbNeeded に返された値と cb
に指定した値を比較する。lpcbNeeded が cb より大きい場合、配列のサイズを大きくして EnumProcessModulesEx
を再度呼び出す。EnumProcessModulesEx 呼び出しによって列挙されたモジュール数を求めるには、lpcbNeeded
パラメータの値を sizeof(HMODULE) で除算する。EnumProcessModulesEx 関数は
LOAD_LIBRARY_AS_DATAFILE フラグでロードされたモジュールのハンドルを取得しない。詳細は LoadLibraryEx
を参照。この関数で返されたハンドルに対して CloseHandle
を呼び出してはならない。情報はスナップショットから得られるため、解放すべきリソースは存在しない。指定プロセスとそれらが使用するヒープ、モジュール、スレッドのスナップショットを取得するには、CreateToolhelp32Snapshot
関数を使用する。Windows 7 および Windows Server 2008 R2 以降、Psapi.h は PSAPI
関数群にバージョン番号を設定している。PSAPI
バージョン番号は、関数を呼び出す際に使用する名前と、プログラムがロードする必要のあるライブラリに影響を与える。PSAPI_VERSION
が 2 以上の場合、この関数は Psapi.h で K32EnumProcessModulesEx
として定義され、Kernel32.lib および Kernel32.dll からエクスポートされる。PSAPI_VERSION が 1
の場合、この関数は Psapi.h で EnumProcessModulesEx
として定義され、K32EnumProcessModulesEx を呼び出すラッパーとして Psapi.lib および Psapi.dll
からエクスポートされる。Windows の旧バージョンと Windows 7 以降の両方で動作する必要があるプログラムは、常に
EnumProcessModulesEx として呼び出すべきである。シンボル解決を正しく行うには、TARGETLIBS マクロに
Psapi.lib を追加し、-DPSAPI_VERSION=1
を指定してプログラムをコンパイルする。実行時動的リンクを利用するには、Psapi.dll をロードする。

情報

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