共用方式為


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 數據結構之其他成員的意義。 定義下列值。

意義
PROCESS_HEAP_ENTRY_BUSY
0x0004
堆積元素是已配置的區塊。

如果同時指定 PROCESS_HEAP_ENTRY_MOVEABLE則 Block 結構會變成有效。 區塊結構的 hMem 成員包含已配置、可移動記憶體區塊的句柄。

PROCESS_HEAP_ENTRY_DDESHARE
0x0020
此值必須與 PROCESS_HEAP_ENTRY_BUSY搭配使用,表示堆積元素是已配置的區塊。
PROCESS_HEAP_ENTRY_MOVEABLE
0x0010
此值必須與 PROCESS_HEAP_ENTRY_BUSY搭配使用,表示堆積元素是已配置的區塊。

區塊已配置 LMEM_MOVEABLEGMEM_MOVEABLE,而 區塊 結構會變成有效。 區塊結構的 hMem 成員包含已配置、可移動記憶體區塊的句柄。

PROCESS_HEAP_REGION
0x0001
堆積元素位於堆積使用中連續虛擬記憶體區域的開頭。

結構的 lpData 成員會指向區域所使用的第一個虛擬位址; cbData 成員會指定保留給此區域的位址空間總大小,以位元組為單位;和 cbOverhead 成員會指定描述區域之堆積控制結構的大小,以位元組為單位。

Region 結構會變成有效。 結構的 dwCommittedSize、dwUnCommittedSizelpFirstBlocklpLastBlock 成員包含區域的其他資訊。

PROCESS_HEAP_UNCOMMITTED_RANGE
0x0002
堆積元素位於堆積區域內未認可的記憶體範圍內。

lpData 成員指向未認可記憶體範圍的開頭;cbData 成員指定未認可記憶體範圍的大小,以位元組為單位;和 cbOverhead 成員會指定描述這個未認可的範圍之控制結構的大小,以位元組為單位。

DUMMYUNIONNAME

DUMMYUNIONNAME.Block

只有在 wFlags 中同時指定PROCESS_HEAP_ENTRY_BUSYPROCESS_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)

另請參閱

GlobalAlloc

HeapAlloc

HeapWalk

VirtualAlloc

VirtualQuery