PROCESS_HEAP_ENTRY struttura (minwinbase.h)
Contiene informazioni su un elemento heap. La funzione HeapWalk usa una struttura PROCESS_HEAP_ENTRY per enumerare gli elementi di un heap.
Sintassi
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;
Members
lpData
Puntatore alla parte dati dell'elemento heap.
Per avviare un'enumerazione heap HeapWalk , impostare lpData su NULL.
Se PROCESS_HEAP_REGION viene usato nel membro wFlags , lpData punta al primo indirizzo virtuale usato dall'area.
Se PROCESS_HEAP_UNCOMMITTED_RANGE viene usato in wFlags, lpData punta all'inizio dell'intervallo di memoria non commessa.
cbData
Dimensioni della parte dati dell'elemento heap, in byte.
Se PROCESS_HEAP_REGION viene usato in wFlags, cbData specifica le dimensioni totali, in byte, dello spazio indirizzi riservato per questa area.
Se PROCESS_HEAP_UNCOMMITTED_RANGE viene usato in wFlags, cbData specifica le dimensioni, in byte, dell'intervallo di memoria non commessa.
cbOverhead
Dimensioni dei dati usati dal sistema per mantenere le informazioni sull'elemento heap, in byte. Questi byte di sovraccarico si aggiungono ai byte cbData della parte dati dell'elemento heap.
Se PROCESS_HEAP_REGION viene usato in wFlags, cbOverhead specifica le dimensioni, in byte, delle strutture di controllo heap che descrivono l'area.
Se PROCESS_HEAP_UNCOMMITTED_RANGE viene usato in wFlags, cbOverhead specifica le dimensioni, in byte, delle strutture di controllo che descrivono l'intervallo non generato.
iRegionIndex
Handle per l'area dell'heap contenente l'elemento heap. Un heap è costituito da una o più aree di memoria virtuale, ognuna con un indice di area univoco.
Nella prima voce heap restituita per la maggior parte delle aree heap, HeapWalk usa il PROCESS_HEAP_REGION nel membro wFlags . Quando viene usato questo valore, i membri della struttura Region contengono informazioni aggiuntive sull'area.
La funzione HeapAlloc a volte usa la funzione VirtualAlloc per allocare blocchi di grandi dimensioni da un heap scalabile. Il gestore heap considera un'allocazione a blocchi di grandi dimensioni come un'area separata con un indice di area univoco. HeapWalk non usa PROCESS_HEAP_REGION nella voce heap restituita per un'area di blocchi di grandi dimensioni, pertanto i membri della struttura Region non sono validi. È possibile usare la funzione VirtualQuery per ottenere informazioni aggiuntive su un'area di blocchi di grandi dimensioni.
wFlags
Proprietà dell'elemento heap. Alcuni valori influiscono sul significato di altri membri di questa struttura di dati PROCESS_HEAP_ENTRY . I valori seguenti sono definiti.
DUMMYUNIONNAME
DUMMYUNIONNAME.Block
Questa struttura è valida solo se i PROCESS_HEAP_ENTRY_BUSY e i PROCESS_HEAP_ENTRY_MOVEABLE vengono specificati in wFlags.
DUMMYUNIONNAME.Block.hMem
Gestire il blocco di memoria allocato e spostato.
DUMMYUNIONNAME.Block.dwReserved[3]
Riservati; non usato.
DUMMYUNIONNAME.Region
Questa struttura è valida solo se il membro wFlags specifica PROCESS_HEAP_REGION.
DUMMYUNIONNAME.Region.dwCommittedSize
Numero di byte nell'area heap attualmente commit come blocchi di memoria gratuiti, blocchi di memoria occupati o strutture di controllo heap.
Si tratta di un campo facoltativo impostato su zero se il numero di byte di commit non è disponibile.
DUMMYUNIONNAME.Region.dwUnCommittedSize
Numero di byte nell'area heap attualmente non commessa.
Si tratta di un campo facoltativo impostato su zero se il numero di byte non inviati non è disponibile.
DUMMYUNIONNAME.Region.lpFirstBlock
Puntatore al primo blocco di memoria valido in questa area heap.
DUMMYUNIONNAME.Region.lpLastBlock
Puntatore al primo blocco di memoria non valido in questa area heap.
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato | Windows XP [solo app desktop] |
Server minimo supportato | Windows Server 2003 [solo app desktop] |
Intestazione | minwinbase.h (includere Windows.h) |