Compartilhar via


estrutura PROCESS_HEAP_ENTRY (minwinbase.h)

Contém informações sobre um elemento heap. A função HeapWalk usa uma estrutura PROCESS_HEAP_ENTRY para enumerar os elementos de um heap.

Sintaxe

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;

Membros

lpData

Um ponteiro para a parte de dados do elemento heap.

Para iniciar uma enumeração heap HeapWalk , defina lpData como NULL.

Se PROCESS_HEAP_REGION for usado no membro wFlags , lpData apontará para o primeiro endereço virtual usado pela região.

Se PROCESS_HEAP_UNCOMMITTED_RANGE for usado em wFlags, lpData apontará para o início do intervalo de memória não confirmada.

cbData

O tamanho da parte de dados do elemento heap, em bytes.

Se PROCESS_HEAP_REGION for usado em wFlags, cbData especificará o tamanho total, em bytes, do espaço de endereço reservado para essa região.

Se PROCESS_HEAP_UNCOMMITTED_RANGE for usado em wFlags, cbData especificará o tamanho, em bytes, do intervalo de memória não confirmada.

cbOverhead

O tamanho dos dados usados pelo sistema para manter informações sobre o elemento heap, em bytes. Esses bytes de sobrecarga são além dos bytes cbData da parte de dados do elemento heap.

Se PROCESS_HEAP_REGION for usado em wFlags, cbOverhead especificará o tamanho, em bytes, das estruturas de controle de heap que descrevem a região.

Se PROCESS_HEAP_UNCOMMITTED_RANGE for usado em wFlags, cbOverhead especificará o tamanho, em bytes, das estruturas de controle que descrevem esse intervalo não confirmado.

iRegionIndex

Um identificador para a região de heap que contém o elemento heap. Um heap consiste em uma ou mais regiões de memória virtual, cada uma com um índice de região exclusivo.

Na primeira entrada de heap retornada para a maioria das regiões de heap, HeapWalk usa o PROCESS_HEAP_REGION no membro wFlags . Quando esse valor é usado, os membros da estrutura Região contêm informações adicionais sobre a região.

Às vezes, a função HeapAlloc usa a função VirtualAlloc para alocar grandes blocos de um heap que pode crescer. O gerenciador de heap trata uma alocação de blocos tão grande como uma região separada com um índice de região exclusivo. O HeapWalk não usa PROCESS_HEAP_REGION na entrada de heap retornada para uma região de bloco grande, portanto, os membros da estrutura Região não são válidos. Você pode usar a função VirtualQuery para obter informações adicionais sobre uma região de bloco grande.

wFlags

As propriedades do elemento heap. Alguns valores afetam o significado de outros membros dessa estrutura de dados PROCESS_HEAP_ENTRY . Os valores a seguir são definidos.

Valor Significado
PROCESS_HEAP_ENTRY_BUSY
0x0004
O elemento heap é um bloco alocado.

Se PROCESS_HEAP_ENTRY_MOVEABLE também for especificado, a estrutura Bloquear se tornará válida. O membro hMem da estrutura Block contém um identificador para o bloco de memória alocado e movevel.

PROCESS_HEAP_ENTRY_DDESHARE
0x0020
Esse valor deve ser usado com PROCESS_HEAP_ENTRY_BUSY, indicando que o elemento heap é um bloco alocado.
PROCESS_HEAP_ENTRY_MOVEABLE
0x0010
Esse valor deve ser usado com PROCESS_HEAP_ENTRY_BUSY, indicando que o elemento heap é um bloco alocado.

O bloco foi alocado com LMEM_MOVEABLE ou GMEM_MOVEABLE e a estrutura Bloquear torna-se válida. O membro hMem da estrutura Block contém um identificador para o bloco de memória alocado e movevel.

PROCESS_HEAP_REGION
0x0001
O elemento heap está localizado no início de uma região de memória virtual contígua em uso pelo heap.

O membro lpData da estrutura aponta para o primeiro endereço virtual usado pela região; o membro cbData especifica o tamanho total, em bytes, do espaço de endereço reservado para essa região; e o membro cbOverhead especifica o tamanho, em bytes, das estruturas de controle de heap que descrevem a região.

A estrutura Região torna-se válida. Os membros dwCommittedSize, dwUnCommittedSize, lpFirstBlock e lpLastBlock da estrutura contêm informações adicionais sobre a região.

PROCESS_HEAP_UNCOMMITTED_RANGE
0x0002
O elemento heap está localizado em um intervalo de memória não confirmada dentro da região do heap.

O membro lpData aponta para o início do intervalo de memória não confirmada; o membro cbData especifica o tamanho, em bytes, do intervalo de memória não confirmada; e o membro cbOverhead especifica o tamanho, em bytes, das estruturas de controle que descrevem esse intervalo não confirmado.

DUMMYUNIONNAME

DUMMYUNIONNAME.Block

Essa estrutura só será válida se os PROCESS_HEAP_ENTRY_BUSY e PROCESS_HEAP_ENTRY_MOVEABLE forem especificados em wFlags.

DUMMYUNIONNAME.Block.hMem

Manipule para o bloco de memória alocado e movevel.

DUMMYUNIONNAME.Block.dwReserved[3]

Reservados; não usado.

DUMMYUNIONNAME.Region

Essa estrutura só será válida se o membro wFlagsespecificar PROCESS_HEAP_REGION.

DUMMYUNIONNAME.Region.dwCommittedSize

Número de bytes na região de heap que atualmente são confirmados como blocos de memória livre, blocos de memória ocupados ou estruturas de controle de heap.

Esse é um campo opcional definido como zero se o número de bytes confirmados não estiver disponível.

DUMMYUNIONNAME.Region.dwUnCommittedSize

Número de bytes na região de heap que atualmente não são confirmados.

Esse é um campo opcional definido como zero se o número de bytes não confirmados não estiver disponível.

DUMMYUNIONNAME.Region.lpFirstBlock

Ponteiro para o primeiro bloco de memória válido nessa região de heap.

DUMMYUNIONNAME.Region.lpLastBlock

Ponteiro para o primeiro bloco de memória inválido nesta região de heap.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Cabeçalho minwinbase.h (inclua Windows.h)

Confira também

Globalalloc

Heapalloc

HeapWalk

Virtualalloc

Virtualquery