<Return[G]><Top>

GetProcessHeaps

Declare Function Api_GetProcessHeaps& Lib "kernel32" Alias "GetProcessHeaps" (ByVal NumberOfHeaps&, ProcessHeaps&)

Declare Function GetProcessHeaps Lib "kernel32" Alias "GetProcessHeaps" (ByVal NumberOfHeaps As Long, ProcessHeaps As Long) As Long

呼び出し側プロセスで有効なすべてのヒープの各ハンドルを取得する。

パラメータ
NumberOfHeaps
    [入力]ProcessHeaps が指すバッファに格納できるヒープハンドルの最大数を指定する。
ProcessHeaps
    [出力]複数のヒープハンドルからなる 1 つの配列を受け取るバッファへのポインタを指定する。

戻り値
    呼び出し側プロセスで有効なヒープハンドルの数が返る。
    NumberOfHeaps パラメータで指定した値と同じ、またはそれ以下の値が返ってきた場合は、ProcessHeaps が指すバッファに、ヒープのハ

    ンドルが格納されている。
    NumberOfHeaps パラメータで指定した値よりも大きな値が返ってきた場合は、バッファが小さすぎて、呼び出し側プロセスで有効なすべて

    のハンドルを格納できない。この場合、戻り値を利用して適切なサイズのバッファを用意し、再びこの関数を呼び出す。
    0 が返ると、関数が失敗したことを意味する。すべてのプロセスは少なくとも 1 つの有効なヒープ、つまりプロセスヒープを備えているので、ヒ

    ープの数として 0 が返ることはないからである。拡張エラー情報を取得するには、 関数を使う。

解説
    呼び出し側プロセスのプロセスヒープのハンドルを取得するには、GetProcessHeap 関数を使う。GetProcessHeaps 関数は、プロセスヒープ

    のハンドルに加え、HeapCreate 関数が作成した追加のプライベートヒープのハンドルも取得する。