Condividi tramite


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.

Valore Significato
PROCESS_HEAP_ENTRY_BUSY
0x0004
L'elemento heap è un blocco allocato.

Se PROCESS_HEAP_ENTRY_MOVEABLE viene specificato anche, la struttura Block diventa valida. Il membro hMem della struttura Block contiene un handle per il blocco di memoria allocato e spostato.

PROCESS_HEAP_ENTRY_DDESHARE
0x0020
Questo valore deve essere usato con PROCESS_HEAP_ENTRY_BUSY, che indica che l'elemento heap è un blocco allocato.
PROCESS_HEAP_ENTRY_MOVEABLE
0x0010
Questo valore deve essere usato con PROCESS_HEAP_ENTRY_BUSY, che indica che l'elemento heap è un blocco allocato.

Il blocco è stato allocato con LMEM_MOVEABLE o GMEM_MOVEABLE e la struttura Block diventa valida. Il membro hMem della struttura Block contiene un handle per il blocco di memoria allocato e spostato.

PROCESS_HEAP_REGION
0x0001
L'elemento heap si trova all'inizio di un'area di memoria virtuale contigua in uso dall'heap.

Il membro lpData della struttura punta al primo indirizzo virtuale usato dall'area; il membro cbData specifica le dimensioni totali, in byte, dello spazio indirizzi riservato per questa area; e il membro cbOverhead specifica le dimensioni, in byte, delle strutture di controllo heap che descrivono l'area.

La struttura Area diventa valida. I membri dwCommittedSize, dwUnCommittedSize, lpFirstBlock e lpLastBlock della struttura contengono informazioni aggiuntive sull'area.

PROCESS_HEAP_UNCOMMITTED_RANGE
0x0002
L'elemento heap si trova in un intervallo di memoria non commessa all'interno dell'area heap.

Il membro lpData punta all'inizio dell'intervallo di memoria non commessa; il membro cbData specifica le dimensioni, in byte, dell'intervallo di memoria non commessa; e il membro cbOverhead specifica le dimensioni, in byte, delle strutture di controllo che descrivono questo intervallo non commesso.

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)

Vedi anche

Globalalloc

HeapAlloc

HeapWalk

Virtualalloc

VirtualQuery