structure PROCESS_HEAP_ENTRY (minwinbase.h)
Contient des informations sur un élément de tas. La fonction HeapWalk utilise une structure PROCESS_HEAP_ENTRY pour énumérer les éléments d’un tas.
Syntaxe
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;
Membres
lpData
Pointeur vers la partie de données de l’élément tas.
Pour lancer une énumération de tas HeapWalk , définissez lpData surNULL.
Si PROCESS_HEAP_REGION est utilisé dans le membre wFlags , lpData pointe vers la première adresse virtuelle utilisée par la région.
Si PROCESS_HEAP_UNCOMMITTED_RANGE est utilisé dans wFlags, lpData pointe vers le début de la plage de mémoire non validée.
cbData
Taille de la partie de données de l’élément tas, en octets.
Si PROCESS_HEAP_REGION est utilisé dans wFlags, cbData spécifie la taille totale, en octets, de l’espace d’adressage réservé à cette région.
Si PROCESS_HEAP_UNCOMMITTED_RANGE est utilisé dans wFlags, cbData spécifie la taille, en octets, de la plage de mémoire non validée.
cbOverhead
Taille des données utilisées par le système pour conserver des informations sur l’élément tas, en octets. Ces octets de surcharge s’ajoutent aux octets cbData de la partie de données de l’élément tas.
Si PROCESS_HEAP_REGION est utilisé dans wFlags, cbOverhead spécifie la taille, en octets, des structures de contrôle du tas qui décrivent la région.
Si PROCESS_HEAP_UNCOMMITTED_RANGE est utilisé dans wFlags, cbOverhead spécifie la taille, en octets, des structures de contrôle qui décrivent cette plage non validée.
iRegionIndex
Handle de la région de tas qui contient l’élément tas. Un tas se compose d’une ou plusieurs régions de mémoire virtuelle, chacune avec un index de région unique.
Dans la première entrée de tas retournée pour la plupart des régions de tas, HeapWalk utilise le PROCESS_HEAP_REGION dans le membre wFlags . Lorsque cette valeur est utilisée, les membres de la structure Region contiennent des informations supplémentaires sur la région.
La fonction HeapAlloc utilise parfois la fonction VirtualAlloc pour allouer des blocs volumineux à partir d’un tas extensible. Le gestionnaire de tas traite une allocation de blocs aussi importante comme une région distincte avec un index de région unique. HeapWalk n’utilise pas PROCESS_HEAP_REGION dans l’entrée de tas retournée pour une région de blocs volumineux. Les membres de la structure Region ne sont donc pas valides. Vous pouvez utiliser la fonction VirtualQuery pour obtenir des informations supplémentaires sur une région de blocs volumineux.
wFlags
Propriétés de l’élément tas. Certaines valeurs affectent la signification d’autres membres de cette structure de données PROCESS_HEAP_ENTRY . Les valeurs suivantes sont définies.
DUMMYUNIONNAME
DUMMYUNIONNAME.Block
Cette structure n’est valide que si les PROCESS_HEAP_ENTRY_BUSY et les PROCESS_HEAP_ENTRY_MOVEABLE sont spécifiés dans wFlags.
DUMMYUNIONNAME.Block.hMem
Gérez le bloc de mémoire alloué et déplaçable.
DUMMYUNIONNAME.Block.dwReserved[3]
Réservés au; non utilisé.
DUMMYUNIONNAME.Region
Cette structure est valide uniquement si le membre wFlags spécifie PROCESS_HEAP_REGION.
DUMMYUNIONNAME.Region.dwCommittedSize
Nombre d’octets dans la région du tas actuellement validés en tant que blocs de mémoire libre, blocs de mémoire occupés ou structures de contrôle du tas.
Il s’agit d’un champ facultatif défini sur zéro si le nombre d’octets validés n’est pas disponible.
DUMMYUNIONNAME.Region.dwUnCommittedSize
Nombre d’octets dans la région du tas qui ne sont actuellement pas validés.
Il s’agit d’un champ facultatif défini sur zéro si le nombre d’octets non validés n’est pas disponible.
DUMMYUNIONNAME.Region.lpFirstBlock
Pointeur vers le premier bloc de mémoire valide dans cette région de tas.
DUMMYUNIONNAME.Region.lpLastBlock
Pointeur vers le premier bloc de mémoire non valide dans cette région de tas.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows XP [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2003 [applications de bureau uniquement] |
En-tête | minwinbase.h (inclure Windows.h) |