Partager via


Utilisation des pages

Pour déterminer la taille d’une page sur l’ordinateur actuel, utilisez la fonction GetSystemInfo .

Les fonctions VirtualQuery et VirtualQueryEx retournent des informations sur une région de pages consécutives commençant à une adresse spécifiée dans l’espace d’adressage d’un processus. VirtualQuery retourne des informations sur la mémoire dans le processus appelant. VirtualQueryEx retourne des informations sur la mémoire dans un processus spécifié et est utilisé pour prendre en charge les débogueurs qui ont besoin d’informations sur un processus en cours de débogage. La région des pages est limitée par l’adresse spécifiée, arrondie à la limite de page la plus proche. Il s’étend sur toutes les pages suivantes avec les attributs suivants en commun :

  • L’état de toutes les pages est le même : commit, reserved ou free.
  • 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 qui ont été réservées par un appel à VirtualAlloc.
  • La protection d’accès de toutes les pages est la même ( c’est-à-dire PAGE_READONLY, PAGE_READWRITE ou PAGE_NOACCESS).

La fonction VirtualLock permet à un processus de verrouiller une ou plusieurs pages de mémoire validée dans la mémoire physique (RAM), ce qui empêche le système d’échanger les pages vers le fichier de pagination. Il peut être utilisé pour garantir que les données critiques sont accessibles sans accès au disque. Le verrouillage des pages en mémoire est dangereux, car il limite la capacité du système à gérer la mémoire. Une utilisation excessive de VirtualLock peut dégrader les performances du système en provoquant l’échange du code exécutable vers le fichier de pagination. La fonction VirtualUnlock déverrouille la mémoire verrouillée par VirtualLock.

La fonction VirtualProtect permet à un processus de modifier la protection d’accès de toute page validée dans l’espace d’adressage d’un processus. Par exemple, un processus peut allouer des pages en lecture/écriture pour stocker des données sensibles, puis modifier l’accès en lecture seule ou sans accès pour se protéger contre le remplacement accidentel. VirtualProtect est généralement utilisé avec les pages allouées par VirtualAlloc, mais il fonctionne également avec les pages validées par l’une des autres fonctions d’allocation. Toutefois, VirtualProtect modifie la protection des pages entières, et les pointeurs retournés par les autres fonctions ne sont pas nécessairement alignés sur les limites des pages. La fonction VirtualProtectEx est similaire à VirtualProtect, sauf qu’elle modifie la protection de la mémoire dans un processus spécifié. La modification de la protection est utile pour les débogueurs lors de l’accès à la mémoire d’un processus en cours de débogage.