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.
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) |