Partager via


VirtualLock, fonction (memoryapi.h)

Verrouille la région spécifiée de l’espace d’adressage virtuel du processus dans la mémoire physique, en veillant à ce que l’accès ultérieur à la région n’entraîne pas d’erreur de page.

Syntaxe

BOOL VirtualLock(
  [in] LPVOID lpAddress,
  [in] SIZE_T dwSize
);

Paramètres

[in] lpAddress

Pointeur vers l’adresse de base de la région de pages à verrouiller.

[in] dwSize

Taille de la région à verrouiller, en octets. La région des pages affectées inclut toutes les pages qui contiennent un ou plusieurs octets dans la plage du paramètre lpAddress à (lpAddress+dwSize). Cela signifie qu’une plage de 2 octets chevauchant une limite de page entraîne le verrouillage des deux pages.

Valeur retournée

Si la fonction réussit, la valeur de retour est différente de zéro.

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

Notes

Toutes les pages de la région spécifiée doivent être validées. La mémoire protégée par PAGE_NOACCESS ne peut pas être verrouillée.

Le verrouillage des pages en mémoire peut dégrader les performances du système en réduisant la RAM disponible et en forçant le système à échanger d’autres pages critiques vers le fichier de pagination. Chaque version de Windows a une limite sur le nombre maximal de pages qu’un processus peut verrouiller. Cette limite est intentionnellement faible pour éviter une dégradation grave des performances. Les applications qui doivent verrouiller un plus grand nombre de pages doivent d’abord appeler la fonction SetProcessWorkingSetSize pour augmenter leurs tailles minimales et maximales de jeu de travail. Le nombre maximal de pages qu’un processus peut verrouiller est égal au nombre de pages dans son jeu de travail minimal moins une petite surcharge.

Les pages qu’un processus a verrouillées restent en mémoire physique jusqu’à ce que le processus les déverrouille ou se termine. Il est garanti que ces pages ne soient pas écrites dans le fichier de page pendant qu’elles sont verrouillées.

Pour déverrouiller une région de pages verrouillées, utilisez la fonction VirtualUnlock . Les pages verrouillées sont automatiquement déverrouillées à l’arrêt du processus.

Cette fonction n’est pas semblable à la fonction GlobalLock ou LocalLock , car elle n’incrémente pas un nombre de verrous et ne traduit pas un handle en pointeur. Il n’y a pas de nombre de verrous pour les pages virtuelles, de sorte que plusieurs appels à la fonction VirtualUnlock ne sont jamais nécessaires pour déverrouiller une région de pages.

Exemples

Pour obtenir un exemple, consultez Création de pages de protection.

Configuration requise

   
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

Fonctions de gestion de la mémoire

SetProcessWorkingSetSize

Fonctions de mémoire virtuelle

VirtualUnlock