次の方法で共有


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

関連項目

GetProcessHeap

ヒープ関数

HeapCreate

メモリ管理関数

VBS エンクレーブで使用できる Vertdll API