Partager via


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.

Valeur Signification
PROCESS_HEAP_ENTRY_BUSY
0x0004
L’élément tas est un bloc alloué.

Si PROCESS_HEAP_ENTRY_MOVEABLE est également spécifié, la structure De blocs devient valide. Le membre hMem de la structure Block contient un handle pour le bloc de mémoire alloué et déplaçable.

PROCESS_HEAP_ENTRY_DDESHARE
0x0020
Cette valeur doit être utilisée avec PROCESS_HEAP_ENTRY_BUSY, indiquant que l’élément tas est un bloc alloué.
PROCESS_HEAP_ENTRY_MOVEABLE
0x0010
Cette valeur doit être utilisée avec PROCESS_HEAP_ENTRY_BUSY, indiquant que l’élément tas est un bloc alloué.

Le bloc a été alloué avec LMEM_MOVEABLE ou GMEM_MOVEABLE, et la structure De blocs devient valide. Le membre hMem de la structure Block contient un handle pour le bloc de mémoire alloué et déplaçable.

PROCESS_HEAP_REGION
0x0001
L’élément tas se trouve au début d’une région de mémoire virtuelle contiguë utilisée par le tas.

Le membre lpData de la structure pointe vers la première adresse virtuelle utilisée par la région ; le membre cbData spécifie la taille totale, en octets, de l’espace d’adressage réservé à cette région ; et le membre cbOverhead spécifie la taille, en octets, des structures de contrôle du tas qui décrivent la région.

La structure Region devient valide. Les membres dwCommittedSize, dwUnCommittedSize, lpFirstBlock et lpLastBlock de la structure contiennent des informations supplémentaires sur la région.

PROCESS_HEAP_UNCOMMITTED_RANGE
0x0002
L’élément tas se trouve dans une plage de mémoire non validée dans la région du tas.

Le membre lpData pointe vers le début de la plage de mémoire non validée ; le membre cbData spécifie la taille, en octets, de la plage de mémoire non validée ; et le membre cbOverhead spécifie la taille, en octets, des structures de contrôle qui décrivent cette plage non validée.

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)

Voir aussi

GlobalAlloc

HeapAlloc

HeapWalk

VirtualAlloc

VirtualQuery