Partager via


VirtualQueryEx, fonction (memoryapi.h)

Récupère des informations sur une plage de pages dans l’espace d’adressage virtuel d’un processus spécifié.

Syntaxe

SIZE_T VirtualQueryEx(
  [in]           HANDLE                    hProcess,
  [in, optional] LPCVOID                   lpAddress,
  [out]          PMEMORY_BASIC_INFORMATION lpBuffer,
  [in]           SIZE_T                    dwLength
);

Paramètres

[in] hProcess

Handle du processus dont les informations de mémoire sont interrogées. Le handle doit avoir été ouvert avec le droit d’accès PROCESS_QUERY_INFORMATION , ce qui permet d’utiliser le handle pour lire les informations de l’objet de processus. Pour plus d’informations, consultez Droits d’accès et de sécurité des processus.

[in, optional] lpAddress

Pointeur vers l’adresse de base de la région des pages à interroger. Cette valeur est arrondie à la limite de page suivante. Pour déterminer la taille d’une page sur l’ordinateur hôte, utilisez la fonction GetSystemInfo .

Si lpAddress spécifie une adresse au-dessus de l’adresse mémoire la plus élevée accessible au processus, la fonction échoue avec ERROR_INVALID_PARAMETER.

[out] lpBuffer

Pointeur vers une structure de MEMORY_BASIC_INFORMATION dans laquelle des informations sur la plage de pages spécifiée sont retournées.

[in] dwLength

Taille de la mémoire tampon pointée vers par le paramètre lpBuffer , en octets.

Valeur retournée

La valeur de retour est le nombre réel d’octets retournés dans la mémoire tampon d’informations.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError. Les valeurs d’erreur possibles incluent ERROR_INVALID_PARAMETER.

Notes

VirtualQueryEx fournit des informations sur une région de pages consécutives commençant à une adresse spécifiée qui partagent les attributs suivants :

  • L’état de toutes les pages est le même (MEM_COMMIT, MEM_RESERVE, MEM_FREE, MEM_PRIVATE, MEM_MAPPED ou MEM_IMAGE).
  • Si la page initiale n’est pas gratuite, toutes les pages de la région font partie de la même allocation initiale de pages créées par un seul appel à VirtualAlloc, MapViewOfFile ou l’une des versions étendues suivantes de ces fonctions : VirtualAllocEx, VirtualAllocExNuma, MapViewOfFileEx, MapViewOfFileExNuma.
  • L’accès accordé à toutes les pages est le même (PAGE_READONLY, PAGE_READWRITE, PAGE_NOACCESS, PAGE_WRITECOPY, PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY, PAGE_GUARD ou PAGE_NOCACHE).
La fonction VirtualQueryEx détermine les attributs de la première page de la région, puis analyse les pages suivantes jusqu’à ce qu’elle analyse toute la plage de pages, ou jusqu’à ce qu’elle rencontre une page avec un ensemble d’attributs sans correspondance. La fonction retourne les attributs et la taille de la région des pages avec des attributs correspondants, en octets. Par exemple, s’il existe une région de 40 mégaoctets (Mo) de mémoire libre et que VirtualQueryEx est appelé sur une page de 10 Mo dans la région, la fonction obtient un état de MEM_FREE et une taille de 30 Mo.

Si une page de copie en écriture partagée est modifiée, elle devient privée pour le processus qui a modifié la page. Toutefois, la fonction VirtualQueryEx continuera à signaler des pages telles que MEM_MAPPED (pour les vues de données) ou MEM_IMAGE (pour les vues d’images exécutables) plutôt que MEM_PRIVATE. Pour détecter si la copie en écriture s’est produite pour une page spécifique, accédez à la page ou verrouillez-la à l’aide de la fonction VirtualLock pour vous assurer que la page réside en mémoire, puis utilisez la fonction QueryWorkingSet ou QueryWorkingSetEx pour case activée le bit partagé dans les informations du jeu de travail étendu de la page. Si le bit partagé est clair, la page est privée.

Spécifications

   
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête memoryapi.h (inclure Windows.h, Memoryapi.h)
Bibliothèque onecore.lib
DLL Kernel32.dll

Voir aussi

GetSystemInfo

MEMORY_BASIC_INFORMATION

MapViewOfFileEx

Fonctions de gestion de la mémoire

Fonctions de mémoire virtuelle

VirtualAllocEx

VirtualProtectEx