Compartir a través de


estructura PROCESS_HEAP_ENTRY (minwinbase.h)

Contiene información sobre un elemento de montón. La función HeapWalk usa una estructura PROCESS_HEAP_ENTRY para enumerar los elementos de un montón.

Sintaxis

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;

Miembros

lpData

Puntero a la parte de datos del elemento del montón.

Para iniciar una enumeración heapWalk heapWalk , establezca lpData en NULL.

Si PROCESS_HEAP_REGION se usa en el miembro wFlags , lpData apunta a la primera dirección virtual usada por la región.

Si PROCESS_HEAP_UNCOMMITTED_RANGE se usa en wFlags, lpData apunta al principio del intervalo de memoria no confirmada.

cbData

Tamaño de la parte de datos del elemento del montón, en bytes.

Si PROCESS_HEAP_REGION se usa en wFlags, cbData especifica el tamaño total, en bytes, del espacio de direcciones reservado para esta región.

Si PROCESS_HEAP_UNCOMMITTED_RANGE se usa en wFlags, cbData especifica el tamaño, en bytes, del intervalo de memoria no confirmada.

cbOverhead

Tamaño de los datos utilizados por el sistema para mantener información sobre el elemento del montón, en bytes. Estos bytes de sobrecarga se agregan a los bytes cbData de la parte de datos del elemento del montón.

Si PROCESS_HEAP_REGION se usa en wFlags, cbOverhead especifica el tamaño, en bytes, de las estructuras de control del montón que describen la región.

Si PROCESS_HEAP_UNCOMMITTED_RANGE se usa en wFlags, cbOverhead especifica el tamaño, en bytes, de las estructuras de control que describen este intervalo no confirmado.

iRegionIndex

Identificador de la región del montón que contiene el elemento del montón. Un montón consta de una o varias regiones de memoria virtual, cada una con un índice de región único.

En la primera entrada del montón devuelta para la mayoría de las regiones del montón, HeapWalk usa el PROCESS_HEAP_REGION en el miembro wFlags . Cuando se usa este valor, los miembros de la estructura Region contienen información adicional sobre la región.

La función HeapAlloc a veces usa la función VirtualAlloc para asignar bloques grandes desde un montón que se puede crecer. El administrador del montón trata una asignación de bloques de gran tamaño como una región independiente con un índice de región único. HeapWalk no usa PROCESS_HEAP_REGION en la entrada del montón devuelta para una región de bloque grande, por lo que los miembros de la estructura Region no son válidos. Puede usar la función VirtualQuery para obtener información adicional sobre una región de bloque grande.

wFlags

Propiedades del elemento del montón. Algunos valores afectan al significado de otros miembros de esta estructura de datos PROCESS_HEAP_ENTRY . Se definen los valores siguientes.

Valor Significado
PROCESS_HEAP_ENTRY_BUSY
0x0004
El elemento del montón es un bloque asignado.

Si también se especifica PROCESS_HEAP_ENTRY_MOVEABLE, la estructura Block se convierte en válida. El miembro hMem de la estructura Block contiene un identificador para el bloque de memoria asignable y desplazable.

PROCESS_HEAP_ENTRY_DDESHARE
0x0020
Este valor se debe usar con PROCESS_HEAP_ENTRY_BUSY, lo que indica que el elemento del montón es un bloque asignado.
PROCESS_HEAP_ENTRY_MOVEABLE
0x0010
Este valor se debe usar con PROCESS_HEAP_ENTRY_BUSY, lo que indica que el elemento del montón es un bloque asignado.

El bloque se asignó con LMEM_MOVEABLE o GMEM_MOVEABLE, y la estructura Block se convierte en válida. El miembro hMem de la estructura Block contiene un identificador para el bloque de memoria asignable y desplazable.

PROCESS_HEAP_REGION
0x0001
El elemento del montón se encuentra al principio de una región de memoria virtual contigua en uso por el montón.

El miembro lpData de la estructura apunta a la primera dirección virtual utilizada por la región; el miembro cbData especifica el tamaño total, en bytes, del espacio de direcciones reservado para esta región; y el miembro cbOverhead especifica el tamaño, en bytes, de las estructuras de control del montón que describen la región.

La estructura Region se convierte en válida. Los miembros dwCommittedSize, dwUnCommittedSize, lpFirstBlock y lpLastBlock de la estructura contienen información adicional sobre la región.

PROCESS_HEAP_UNCOMMITTED_RANGE
0x0002
El elemento del montón se encuentra en un intervalo de memoria no confirmada dentro de la región del montón.

El miembro lpData apunta al principio del intervalo de memoria no confirmada; el miembro cbData especifica el tamaño, en bytes, del intervalo de memoria no confirmada; y el miembro cbOverhead especifica el tamaño, en bytes, de las estructuras de control que describen este intervalo no confirmado.

DUMMYUNIONNAME

DUMMYUNIONNAME.Block

Esta estructura solo es válida si se especifican tanto el PROCESS_HEAP_ENTRY_BUSY como el PROCESS_HEAP_ENTRY_MOVEABLE en wFlags.

DUMMYUNIONNAME.Block.hMem

Identificador del bloque de memoria asignado y desplazable.

DUMMYUNIONNAME.Block.dwReserved[3]

Reservados; no se usa.

DUMMYUNIONNAME.Region

Esta estructura solo es válida si el miembro wFlags especifica PROCESS_HEAP_REGION.

DUMMYUNIONNAME.Region.dwCommittedSize

Número de bytes en la región del montón que se confirma actualmente como bloques de memoria libres, bloques de memoria ocupados o estructuras de control del montón.

Se trata de un campo opcional que se establece en cero si el número de bytes confirmados no está disponible.

DUMMYUNIONNAME.Region.dwUnCommittedSize

Número de bytes de la región del montón que actualmente no se han confirmado.

Se trata de un campo opcional que se establece en cero si el número de bytes no confirmados no está disponible.

DUMMYUNIONNAME.Region.lpFirstBlock

Puntero al primer bloque de memoria válido de esta región del montón.

DUMMYUNIONNAME.Region.lpLastBlock

Puntero al primer bloque de memoria no válido de esta región del montón.

Requisitos

Requisito Value
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Encabezado minwinbase.h (incluye Windows.h)

Consulte también

GlobalAlloc

HeapAlloc

HeapWalk

VirtualAlloc

VirtualQuery