PROCESS_HEAP_ENTRY 構造体 (minwinbase.h)
ヒープ要素に関する情報を格納します。 HeapWalk 関数は、PROCESS_HEAP_ENTRY構造体を使用してヒープの要素を列挙します。
構文
typedef struct _PROCESS_HEAP_ENTRY {
PVOID lpData;
DWORD cbData;
BYTE cbOverhead;
BYTE iRegionIndex;
WORD wFlags;
union {
struct {
HANDLE hMem;
DWORD dwReserved[3];
} Block;
struct {
DWORD dwCommittedSize;
DWORD dwUnCommittedSize;
LPVOID lpFirstBlock;
LPVOID lpLastBlock;
} Region;
} DUMMYUNIONNAME;
} PROCESS_HEAP_ENTRY, *LPPROCESS_HEAP_ENTRY, *PPROCESS_HEAP_ENTRY;
メンバー
lpData
ヒープ要素のデータ部分へのポインター。
HeapWalk ヒープ列挙を開始するには、lpData を NULL に設定します。
wFlags メンバーでPROCESS_HEAP_REGIONが使用されている場合、lpData はリージョンで使用される最初の仮想アドレスを指します。
wFlags でPROCESS_HEAP_UNCOMMITTED_RANGEが使用されている場合、lpData はコミットされていないメモリの範囲の先頭を指します。
cbData
ヒープ要素のデータ部分のサイズ (バイト単位)。
wFlags でPROCESS_HEAP_REGIONを使用する場合、cbData は、このリージョン用に予約されているアドレス空間の合計サイズ (バイト単位) を指定します。
wFlags でPROCESS_HEAP_UNCOMMITTED_RANGEを使用する場合、cbData はコミットされていないメモリの範囲のサイズをバイト単位で指定します。
cbOverhead
ヒープ要素に関する情報を保持するためにシステムによって使用されるデータのサイズ (バイト単位)。 これらのオーバーヘッド バイトは、ヒープ要素のデータ部分の cbData バイトに追加されます。
wFlags でPROCESS_HEAP_REGIONを使用する場合、cbOverhead は、領域を記述するヒープ制御構造体のサイズをバイト単位で指定します。
wFlags でPROCESS_HEAP_UNCOMMITTED_RANGEを使用する場合、cbOverhead は、このコミットされていない範囲を記述するコントロール構造体のサイズをバイト単位で指定します。
iRegionIndex
ヒープ要素を含むヒープ領域へのハンドル。 ヒープは、仮想メモリの 1 つ以上のリージョンで構成され、それぞれが一意のリージョン インデックスを持つ。
ほとんどのヒープ領域で返される最初のヒープ エントリでは、HeapWalk は wFlags メンバーのPROCESS_HEAP_REGIONを使用します。 この値を使用すると、Region 構造体のメンバーには 、リージョン に関する追加情報が含まれます。
HeapAlloc 関数は、VirtualAlloc 関数を使用して、拡張可能なヒープから大きなブロックを割り当てる場合があります。 ヒープ マネージャーは、このような大きなブロック割り当てを、一意のリージョン インデックスを持つ別のリージョンとして扱います。 HeapWalk は、大きなブロック領域に対して返されるヒープ エントリで PROCESS_HEAP_REGION を使用しないため、 Region 構造体のメンバーは無効です。 VirtualQuery 関数を使用すると、大きなブロック領域に関する追加情報を取得できます。
wFlags
ヒープ要素のプロパティ。 一部の値は、この PROCESS_HEAP_ENTRY データ構造の他のメンバーの意味に影響します。 次の値が定義されています。
DUMMYUNIONNAME
DUMMYUNIONNAME.Block
この構造体は、 PROCESS_HEAP_ENTRY_BUSY と PROCESS_HEAP_ENTRY_MOVEABLE の両方が wFlags で指定されている場合にのみ有効です。
DUMMYUNIONNAME.Block.hMem
割り当てられた移動可能なメモリ ブロックへのハンドル。
DUMMYUNIONNAME.Block.dwReserved[3]
予約;は使用されません。
DUMMYUNIONNAME.Region
この構造体は、 wFlags メンバーが PROCESS_HEAP_REGIONを指定する場合にのみ有効です。
DUMMYUNIONNAME.Region.dwCommittedSize
現在、空きメモリ ブロック、ビジー メモリ ブロック、またはヒープ制御構造体としてコミットされているヒープ領域のバイト数。
これは、コミットされたバイト数が使用できない場合に 0 に設定される省略可能なフィールドです。
DUMMYUNIONNAME.Region.dwUnCommittedSize
現在コミットされていないヒープ領域のバイト数。
これは省略可能なフィールドで、コミットされていないバイト数が使用できない場合は 0 に設定されます。
DUMMYUNIONNAME.Region.lpFirstBlock
このヒープ領域の最初の有効なメモリ ブロックへのポインター。
DUMMYUNIONNAME.Region.lpLastBlock
このヒープ領域の最初の無効なメモリ ブロックへのポインター。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
Header | minwinbase.h (Windows.h を含む) |