GetProcessHeaps

アクティブなヒープの数を返し、呼び出し側プロセスのすべてのアクティブなヒープへのハンドルを取得する。

GetProcessHeaps NumberOfHeaps, ProcessHeaps

NumberOfHeaps : [int] ProcessHeaps が指すバッファに格納できるヒープハンドルの最大数。
ProcessHeaps : [intptr] ヒープハンドルの配列を受け取るバッファへのポインタ。

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

解説

アクティブなヒープの数を返し、呼び出し側プロセスのすべてのアクティブなヒープへのハンドルを取得する。

[戻り値]
戻り値は、呼び出し側プロセスでアクティブなヒープへのハンドル数。戻り値が NumberOfHeaps
以下の場合、関数はその数のヒープハンドルを ProcessHeaps が指すバッファに格納している。戻り値が NumberOfHeaps
より大きい場合、ProcessHeaps が指すバッファは呼び出し側プロセスのすべてのヒープハンドルを保持するには小さすぎるため、関数は
NumberOfHeaps
個のハンドルをバッファに格納する。すべてのハンドルを受け取るのに十分な大きさのバッファを確保するために戻り値を使用し、関数を再度呼び出す。戻り値が
0 の場合、すべてのプロセスは少なくとも 1
つのアクティブなヒープ(プロセスの既定ヒープ)を持つため、関数は失敗している。拡張エラー情報を取得するには GetLastError
を呼ぶ。

[備考]
GetProcessHeaps 関数は、呼び出し側プロセスの既定ヒープへのハンドルと、プロセス内の任意のスレッドで HeapCreate
関数を呼び出して作成された追加のプライベートヒープへのハンドルを取得する。GetProcessHeaps
関数は、関数で取得されるプライベートヒープの一部はプロセス内で動作する他のコードによって作成されている可能性があり、GetProcessHeaps
が戻った後に破棄される可能性があるため、主にデバッグに有用である。ヒープを破棄するとそのヒープのハンドルは無効になり、そのようなハンドルを継続して使用するとアプリケーションで未定義の動作が発生する可能性がある。ヒープ関数は呼び出し側プロセスの既定ヒープと、プロセスが作成・管理するプライベートヒープに対してのみ呼び出すべきである。呼び出し側プロセスのプロセスヒープへのハンドルを取得するには、GetProcessHeap
関数を使用する。

情報

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