CreateToolhelp32Snapshot

指定したプロセス、およびそれらのプロセスが使用するヒープ、モジュール、スレッドのスナップショットを取得する。

CreateToolhelp32Snapshot dwFlags, th32ProcessID

dwFlags : [int] 
th32ProcessID : [int] スナップショットに含めるプロセスのプロセス識別子。このパラメータを 0 にすると現在のプロセスを示す。このパラメータは TH32CS_SNAPHEAPLIST、TH32CS_SNAPMODULE、TH32CS_SNAPMODULE32、または TH32CS_SNAPALL 値が指定された場合に使用される。それ以外の場合は無視され、すべてのプロセスがスナップショットに含まれる。指定されたプロセスが Idle プロセスまたは CSRSS プロセスの 1 つである場合、それらのアクセス制限によりユーザーレベルのコードでは開けないため、関数は失敗し最後のエラーコードは ERROR_ACCESS_DENIED となる。指定されたプロセスが 64bit プロセスで呼び出し側が 32bit プロセスの場合、関数は失敗し最後のエラーコードは ERROR_PARTIAL_COPY (299) となる。

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

解説

指定したプロセス、およびそれらのプロセスが使用するヒープ、モジュール、スレッドのスナップショットを取得する。

[戻り値]
関数が成功した場合、戻り値は指定したスナップショットへのオープンハンドルである。関数が失敗した場合、戻り値は
INVALID_HANDLE_VALUE となる。拡張エラー情報を取得するには GetLastError
を呼ぶ。発生し得るエラーコードには ERROR_BAD_LENGTH などが含まれる。

[備考]
この関数で取得したスナップショットは他の tool help
関数によって参照され結果が提供される。スナップショットへのアクセスは読み取り専用である。スナップショットハンドルはオブジェクトハンドルとして機能し、有効なプロセスやスレッドに関する同じ規則に従う。すべてのプロセスのヒープやモジュール状態を列挙するには、TH32CS_SNAPALL
を指定し th32ProcessID を 0 に設定する。次にスナップショット内の追加プロセスごとに、プロセス識別子と
TH32CS_SNAPHEAPLIST または TH32_SNAPMODULE 値を指定して再度
CreateToolhelp32Snapshot
を呼ぶ。現在のプロセス以外のヒープやモジュールを含むスナップショットを取得する際、CreateToolhelp32Snapshot
はさまざまな理由で失敗したり誤った情報を返したりすることがある。たとえば対象プロセスのローダーデータテーブルが破損していたり初期化されていなかったり、関数呼び出し中に
DLL のロード/アンロードによりモジュールリストが変化した場合、関数は ERROR_BAD_LENGTH
などのエラーコードで失敗することがある。対象プロセスがサスペンド状態で起動されていないことを確認し、関数を再度呼び出してみる。TH32CS_SNAPMODULE
または TH32CS_SNAPMODULE32 で呼び出した際 ERROR_BAD_LENGTH
で失敗する場合は、成功するまで関数を繰り返し呼ぶ。TH32CS_SNAPMODULE と TH32CS_SNAPMODULE32 フラグは
LOAD_LIBRARY_AS_DATAFILE などのフラグでロードされたモジュールのハンドルは取得しない。詳細は
LoadLibraryEx を参照。スナップショットを破棄するには CloseHandle 関数を使用する。なお
QueryFullProcessImageName 関数を使うと、32bit プロセスからでも 32bit/64bit
いずれのプロセスについても実行可能イメージのフルネームを取得できる。

情報

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