GetProcessHeaps 関数 (heapapi.h)
アクティブ ヒープの数を返し、呼び出し元プロセスのすべてのアクティブ ヒープへのハンドルを取得します。
構文
DWORD GetProcessHeaps(
[in] DWORD NumberOfHeaps,
[out] PHANDLE ProcessHeaps
);
パラメーター
[in] NumberOfHeaps
ProcessHeaps が指すバッファーに格納できるヒープ ハンドルの最大数。
[out] ProcessHeaps
ヒープ ハンドルの配列を受け取るバッファーへのポインター。
戻り値
戻り値は、呼び出し元プロセスでアクティブなヒープへのハンドルの数です。
戻り値が NumberOfHeaps 以下の場合、関数は ProcessHeaps が指すバッファーにその数のヒープ ハンドルを格納します。
戻り値が NumberOfHeaps より大きい場合、 ProcessHeaps が指すバッファーが小さすぎて呼び出し元プロセスのすべてのヒープ ハンドルを保持できません。関数は NumberOfHeaps ハンドルをバッファーに格納します。 戻り値を使用して、すべてのハンドルを受け取るのに十分な大きさのバッファーを割り当て、関数を再度呼び出します。
戻り値が 0 の場合、すべてのプロセスに少なくとも 1 つのアクティブ ヒープ (プロセスの既定のヒープ) があるため、関数は失敗しました。 詳細なエラー情報を得るには、GetLastError を呼び出します。
解説
GetProcessHeaps 関数は、呼び出し元プロセスの既定のヒープへのハンドルと、プロセス内の任意のスレッドで HeapCreate 関数を呼び出すことによって作成された追加のプライベート ヒープへのハンドルを取得します。
GetProcessHeaps 関数は、主にデバッグに役立ちます。これは、関数によって取得されたプライベート ヒープの一部が、プロセスで実行されている他のコードによって作成され、GetProcessHeaps が返された後に破棄される可能性があるためです。 ヒープを破棄すると、ヒープへのハンドルが無効になり、このようなハンドルを引き続き使用すると、アプリケーションで未定義の動作が発生する可能性があります。 ヒープ関数は、呼び出し元プロセスの既定のヒープと、プロセスが作成および管理するプライベート ヒープでのみ呼び出す必要があります。
呼び出し元プロセスのプロセス ヒープへのハンドルを取得するには、 GetProcessHeap 関数を使用します。
例
例については、「 プロセス ヒープの取得」を参照してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | heapapi.h (Windows.h を含む) |
Library | Kernel32.lib |
[DLL] | Kernel32.dll |