структура PROCESS_HEAP_ENTRY (minwinbase.h)
Содержит сведения об элементе кучи. Функция HeapWalk использует структуру PROCESS_HEAP_ENTRY для перечисления элементов кучи.
Синтаксис
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;
Члены
lpData
Указатель на часть данных элемента кучи.
Чтобы инициировать перечисление кучи HeapWalk , задайте для lpDataзначение NULL.
Если PROCESS_HEAP_REGION используется в элементе wFlags , lpData указывает на первый виртуальный адрес, используемый регионом.
Если вwFlags используется PROCESS_HEAP_UNCOMMITTED_RANGE, lpData указывает на начало диапазона незафиксированных операций памяти.
cbData
Размер части данных элемента кучи в байтах.
Если вwFlags используется PROCESS_HEAP_REGION, cbData указывает общий размер адресного пространства, зарезервированного для этого региона, в байтах.
Если вwFlags используется PROCESS_HEAP_UNCOMMITTED_RANGE, cbData указывает размер диапазона незафиксированных операций памяти в байтах.
cbOverhead
Размер данных, используемых системой для хранения сведений об элементе кучи, в байтах. Эти накладные байты являются дополнением к байтам cbData части данных элемента кучи.
Если вwFlags используется PROCESS_HEAP_REGION, cbOverhead указывает размер (в байтах) структур управления кучи, описывающих область.
Если вwFlags используется PROCESS_HEAP_UNCOMMITTED_RANGE, cbOverhead указывает размер в байтах структур управления, описывающих этот незафиксированный диапазон.
iRegionIndex
Дескриптор области кучи, содержащей элемент кучи. Куча состоит из одной или нескольких областей виртуальной памяти, каждая из которых имеет уникальный индекс региона.
В первой записи кучи, возвращаемой для большинства регионов кучи, HeapWalk использует PROCESS_HEAP_REGION в элементе wFlags . При использовании этого значения члены структуры Region содержат дополнительные сведения о регионе.
Функция HeapAlloc иногда использует функцию VirtualAlloc для выделения больших блоков из кучи с возможностью роста. Диспетчер кучи рассматривает такое выделение большого блока как отдельный регион с уникальным индексом региона. HeapWalk не использует PROCESS_HEAP_REGION в записи кучи, возвращаемой для большой области блоков, поэтому элементы структуры Region недопустимы. Функцию VirtualQuery можно использовать для получения дополнительных сведений о большой области блоков.
wFlags
Свойства элемента кучи. Некоторые значения влияют на значение других элементов этого PROCESS_HEAP_ENTRY структуры данных. Определены следующие значения.
DUMMYUNIONNAME
DUMMYUNIONNAME.Block
Эта структура действительна, только если PROCESS_HEAP_ENTRY_BUSY и PROCESS_HEAP_ENTRY_MOVEABLE указаны в wFlags.
DUMMYUNIONNAME.Block.hMem
Дескриптор выделенного перемещаемого блока памяти.
DUMMYUNIONNAME.Block.dwReserved[3]
Защищены; не используется.
DUMMYUNIONNAME.Region
Эта структура действительна, только если член wFlags указывает PROCESS_HEAP_REGION.
DUMMYUNIONNAME.Region.dwCommittedSize
Количество байтов в области кучи, которые в настоящее время зафиксированы как свободные блоки памяти, блоки занятой памяти или структуры управления кучей.
Это необязательное поле, которое имеет значение 0, если количество зафиксированных байтов недоступно.
DUMMYUNIONNAME.Region.dwUnCommittedSize
Число байтов в области кучи, которые в настоящее время не зафиксированы.
Это необязательное поле, которое имеет значение 0, если количество незафиксированных байтов недоступно.
DUMMYUNIONNAME.Region.lpFirstBlock
Указатель на первый допустимый блок памяти в этой области кучи.
DUMMYUNIONNAME.Region.lpLastBlock
Указатель на первый недопустимый блок памяти в этой области кучи.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Верхняя часть | minwinbase.h (включая Windows.h) |