struktur PROCESS_HEAP_ENTRY (minwinbase.h)

Berisi informasi tentang elemen heap. Fungsi HeapWalk menggunakan struktur PROCESS_HEAP_ENTRY untuk menghitung elemen tumpukan.

Sintaks

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;

Anggota

lpData

Penunjuk ke bagian data elemen heap.

Untuk memulai enumerasi heapWalk , atur lpData ke NULL.

Jika PROCESS_HEAP_REGION digunakan dalam anggota wFlags , lpData menunjuk ke alamat virtual pertama yang digunakan oleh wilayah tersebut.

Jika PROCESS_HEAP_UNCOMMITTED_RANGE digunakan dalam wFlags, lpData menunjuk ke awal rentang memori yang tidak dikomit.

cbData

Ukuran bagian data dari elemen heap, dalam byte.

Jika PROCESS_HEAP_REGION digunakan dalam wFlags, cbData menentukan ukuran total, dalam byte, dari ruang alamat yang dicadangkan untuk wilayah ini.

Jika PROCESS_HEAP_UNCOMMITTED_RANGE digunakan dalam wFlags, cbData menentukan ukuran, dalam byte, dari rentang memori yang tidak dilakukan.

cbOverhead

Ukuran data yang digunakan oleh sistem untuk mempertahankan informasi tentang elemen heap, dalam byte. Byte overhead ini selain byte cbData dari bagian data elemen heap.

Jika PROCESS_HEAP_REGION digunakan dalam wFlags, cbOverhead menentukan ukuran, dalam byte, dari struktur kontrol timbunan yang menjelaskan wilayah tersebut.

Jika PROCESS_HEAP_UNCOMMITTED_RANGE digunakan dalam wFlags, cbOverhead menentukan ukuran, dalam byte, dari struktur kontrol yang menjelaskan rentang yang tidak dilakukan ini.

iRegionIndex

Handel ke wilayah heap yang berisi elemen heap. Timbunan terdiri dari satu atau beberapa wilayah memori virtual, masing-masing dengan indeks wilayah yang unik.

Dalam entri timbunan pertama yang dikembalikan untuk sebagian besar wilayah heap, HeapWalk menggunakan PROCESS_HEAP_REGION di anggota wFlags . Saat nilai ini digunakan, anggota struktur Wilayah berisi informasi tambahan tentang wilayah tersebut.

Fungsi HeapAlloc terkadang menggunakan fungsi VirtualAlloc untuk mengalokasikan blok besar dari tumpukan yang dapat tumbuh. Manajer timbunan memperlakukan alokasi blok besar seperti wilayah terpisah dengan indeks wilayah yang unik. HeapWalk tidak menggunakan PROCESS_HEAP_REGION dalam entri heap yang dikembalikan untuk wilayah blok besar, sehingga anggota struktur Wilayah tidak valid. Anda dapat menggunakan fungsi VirtualQuery untuk mendapatkan informasi tambahan tentang wilayah blok besar.

wFlags

Properti elemen heap. Beberapa nilai memengaruhi arti anggota lain dari struktur data PROCESS_HEAP_ENTRY ini. Nilai berikut ditentukan.

Nilai Makna
PROCESS_HEAP_ENTRY_BUSY
0x0004
Elemen heap adalah blok yang dialokasikan.

Jika PROCESS_HEAP_ENTRY_MOVEABLE juga ditentukan, struktur Blokir menjadi valid. Anggota hMem dari struktur Blok berisi handel ke blok memori yang dialokasikan dan dapat dipindahkan.

PROCESS_HEAP_ENTRY_DDESHARE
0x0020
Nilai ini harus digunakan dengan PROCESS_HEAP_ENTRY_BUSY, menunjukkan bahwa elemen heap adalah blok yang dialokasikan.
PROCESS_HEAP_ENTRY_MOVEABLE
0x0010
Nilai ini harus digunakan dengan PROCESS_HEAP_ENTRY_BUSY, menunjukkan bahwa elemen heap adalah blok yang dialokasikan.

Blok dialokasikan dengan LMEM_MOVEABLE atau GMEM_MOVEABLE, dan struktur Blok menjadi valid. Anggota hMem dari struktur Blok berisi handel ke blok memori yang dialokasikan dan dapat dipindahkan.

PROCESS_HEAP_REGION
0x0001
Elemen heap terletak di awal wilayah memori virtual yang berdampingan yang digunakan oleh timbunan.

Anggota lpData struktur menunjuk ke alamat virtual pertama yang digunakan oleh wilayah tersebut; anggota cbData menentukan ukuran total, dalam byte, dari ruang alamat yang dicadangkan untuk wilayah ini; dan anggota cbOverhead menentukan ukuran, dalam byte, dari struktur kontrol timbunan yang menjelaskan wilayah.

Struktur Wilayah menjadi valid. Anggota dwCommittedSize, dwUnCommittedSize, lpFirstBlock, dan lpLastBlock struktur berisi informasi tambahan tentang wilayah tersebut.

PROCESS_HEAP_UNCOMMITTED_RANGE
0x0002
Elemen heap terletak di berbagai memori yang tidak dikomit dalam wilayah heap.

Anggota lpData menunjuk ke awal rentang memori yang tidak dikomit; anggota cbData menentukan ukuran, dalam byte, dari rentang memori yang tidak dikomit; dan anggota cbOverhead menentukan ukuran, dalam byte, dari struktur kontrol yang menjelaskan rentang yang tidak dikomit ini.

DUMMYUNIONNAME

DUMMYUNIONNAME.Block

Struktur ini hanya berlaku jika PROCESS_HEAP_ENTRY_BUSY dan PROCESS_HEAP_ENTRY_MOVEABLE ditentukan dalam wFlags.

DUMMYUNIONNAME.Block.hMem

Tangani blok memori yang dialokasikan dan dapat dipindahkan.

DUMMYUNIONNAME.Block.dwReserved[3]

Dipesan; tidak digunakan.

DUMMYUNIONNAME.Region

Struktur ini hanya berlaku jika anggota wFlags menentukan PROCESS_HEAP_REGION.

DUMMYUNIONNAME.Region.dwCommittedSize

Jumlah byte di wilayah heap yang saat ini diterapkan sebagai blok memori bebas, blok memori sibuk, atau struktur kontrol timbunan.

Ini adalah bidang opsional yang diatur ke nol jika jumlah byte yang diterapkan tidak tersedia.

DUMMYUNIONNAME.Region.dwUnCommittedSize

Jumlah byte di wilayah heap yang saat ini tidak dikomit.

Ini adalah bidang opsional yang diatur ke nol jika jumlah byte yang tidak dikomit tidak tersedia.

DUMMYUNIONNAME.Region.lpFirstBlock

Arahkan ke blok memori pertama yang valid di wilayah heap ini.

DUMMYUNIONNAME.Region.lpLastBlock

Penunjuk ke blok memori pertama yang tidak valid di wilayah heap ini.

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows XP [hanya aplikasi desktop]
Server minimum yang didukung Windows Server 2003 [hanya aplikasi desktop]
Header minwinbase.h (termasuk Windows.h)

Lihat juga

GlobalAlloc

HeapAlloc

HeapWalk

VirtualAlloc

VirtualQuery