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。
如果在 wFlags 成员中使用PROCESS_HEAP_REGION,则 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 使用 wFlags 成员中的PROCESS_HEAP_REGION。 使用此值时, Region 结构的成员包含有关该区域的其他信息。
HeapAlloc 函数有时使用 VirtualAlloc 函数从可增长的堆中分配大型块。 堆管理器将此类大型块分配视为具有唯一区域索引的单独区域。 HeapWalk 不使用为大型块区域返回的堆条目中的 PROCESS_HEAP_REGION ,因此 Region 结构的成员无效。 可以使用 VirtualQuery 函数获取有关大型块区域的其他信息。
wFlags
堆元素的属性。 某些值会影响此 PROCESS_HEAP_ENTRY 数据结构的其他成员的含义。 定义了以下值。
DUMMYUNIONNAME
DUMMYUNIONNAME.Block
仅当 wFlags 中同时指定了PROCESS_HEAP_ENTRY_BUSY和PROCESS_HEAP_ENTRY_MOVEABLE时,此结构才有效。
DUMMYUNIONNAME.Block.hMem
已分配的可移动内存块的句柄。
DUMMYUNIONNAME.Block.dwReserved[3]
保留;未使用。
DUMMYUNIONNAME.Region
仅当 wFlags 成员指定 PROCESS_HEAP_REGION时,此结构才有效。
DUMMYUNIONNAME.Region.dwCommittedSize
堆区域中当前作为可用内存块、繁忙内存块或堆控制结构提交的字节数。
这是一个可选字段,如果提交的字节数不可用,则设置为零。
DUMMYUNIONNAME.Region.dwUnCommittedSize
堆区域中当前未提交的字节数。
这是一个可选字段,如果未提交的字节数不可用,则设置为零。
DUMMYUNIONNAME.Region.lpFirstBlock
指向此堆区域中第一个有效内存块的指针。
DUMMYUNIONNAME.Region.lpLastBlock
指向此堆区域中第一个无效内存块的指针。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
标头 | minwinbase.h (包括 Windows.h) |