PROCESS_HEAP_ENTRY-Struktur (minwinbase.h)
Enthält Informationen zu einem Heapelement. Die HeapWalk-Funktion verwendet eine PROCESS_HEAP_ENTRY-Struktur , um die Elemente eines Heaps aufzulisten.
Syntax
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;
Member
lpData
Ein Zeiger auf den Datenteil des Heapelements.
Um eine HeapWalk-Heapaufzählung zu initiieren, legen Sie lpData auf NULL fest.
Wenn PROCESS_HEAP_REGION im wFlags-Member verwendet wird, verweist lpData auf die erste virtuelle Adresse, die von der Region verwendet wird.
Wenn PROCESS_HEAP_UNCOMMITTED_RANGE in wFlags verwendet wird, verweist lpData auf den Anfang des Bereichs des Arbeitsspeichers ohne Commit.
cbData
Die Größe des Datenteils des Heapelements in Bytes.
Wenn PROCESS_HEAP_REGION in wFlags verwendet wird, gibt cbData die Gesamtgröße des Adressraums in Bytes an, der für diese Region reserviert ist.
Wenn PROCESS_HEAP_UNCOMMITTED_RANGE in wFlags verwendet wird, gibt cbData die Größe des Arbeitsspeicherbereichs ohne Commit in Bytes an.
cbOverhead
Die Größe der Daten, die vom System zum Verwalten von Informationen über das Heapelement in Bytes verwendet werden. Diese Mehraufwandbytes werden zusätzlich zu den cbData-Bytes des Datenteils des Heapelements verwendet.
Wenn PROCESS_HEAP_REGION in wFlags verwendet wird, gibt cbOverhead die Größe der Heapsteuerungsstrukturen in Bytes an, die den Bereich beschreiben.
Wenn PROCESS_HEAP_UNCOMMITTED_RANGE in wFlags verwendet wird, gibt cbOverhead die Größe der Steuerelementstrukturen in Bytes an, die diesen bereich ohne Commit beschreiben.
iRegionIndex
Ein Handle für den Heapbereich, der das Heapelement enthält. Ein Heap besteht aus einer oder mehreren Regionen mit virtuellem Arbeitsspeicher, die jeweils einen eindeutigen Regionsindex aufweisen.
Im ersten Heapeintrag, der für die meisten Heapregionen zurückgegeben wird, verwendet HeapWalk die PROCESS_HEAP_REGION im wFlags-Element . Wenn dieser Wert verwendet wird, enthalten die Member der Region-Struktur zusätzliche Informationen zur Region.
Die HeapAlloc-Funktion verwendet manchmal die VirtualAlloc-Funktion , um große Blöcke aus einem erweiterbaren Heap zuzuordnen. Der Heap-Manager behandelt eine solche große Blockzuordnung als separate Region mit einem eindeutigen Regionsindex. HeapWalk verwendet keine PROCESS_HEAP_REGION im Heapeintrag, der für einen großen Blockbereich zurückgegeben wird, sodass die Member der Region-Struktur ungültig sind. Sie können die VirtualQuery-Funktion verwenden, um zusätzliche Informationen zu einem großen Blockbereich abzurufen.
wFlags
Die Eigenschaften des Heapelements. Einige Werte wirken sich auf die Bedeutung anderer Member dieser PROCESS_HEAP_ENTRY Datenstruktur aus. Die folgenden Werte werden definiert.
DUMMYUNIONNAME
DUMMYUNIONNAME.Block
Diese Struktur ist nur gültig, wenn sowohl die PROCESS_HEAP_ENTRY_BUSY als auch PROCESS_HEAP_ENTRY_MOVEABLE in wFlags angegeben sind.
DUMMYUNIONNAME.Block.hMem
Handle für den zugeordneten, beweglichen Speicherblock.
DUMMYUNIONNAME.Block.dwReserved[3]
Reserviert; nicht verwendet.
DUMMYUNIONNAME.Region
Diese Struktur ist nur gültig, wenn der wFlags-MemberPROCESS_HEAP_REGION angibt.
DUMMYUNIONNAME.Region.dwCommittedSize
Anzahl der Bytes in der Heapregion, die derzeit als freie Speicherblöcke, ausgelastete Speicherblöcke oder Heapsteuerungsstrukturen committet werden.
Dies ist ein optionales Feld, das auf 0 festgelegt wird, wenn die Anzahl der committeten Bytes nicht verfügbar ist.
DUMMYUNIONNAME.Region.dwUnCommittedSize
Anzahl der Bytes in der Heapregion, die derzeit nicht committiert werden.
Dies ist ein optionales Feld, das auf 0 festgelegt wird, wenn die Anzahl der bytes ohne Commit nicht verfügbar ist.
DUMMYUNIONNAME.Region.lpFirstBlock
Zeiger auf den ersten gültigen Speicherblock in dieser Heapregion.
DUMMYUNIONNAME.Region.lpLastBlock
Zeiger auf den ersten ungültigen Speicherblock in diesem Heapbereich.
Anforderungen
Anforderung | Wert |
---|---|
Unterstützte Mindestversion (Client) | Windows XP [nur Desktop-Apps] |
Unterstützte Mindestversion (Server) | Windows Server 2003 [nur Desktop-Apps] |
Kopfzeile | minwinbase.h (windows.h einschließen) |