Función VirtualLock (memoryapi.h)

Bloquea la región especificada del espacio de direcciones virtuales del proceso en memoria física, lo que garantiza que el acceso posterior a la región no incurrirá en un error de página.

Sintaxis

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

Parámetros

[in] lpAddress

Puntero a la dirección base de la región de páginas que se va a bloquear.

[in] dwSize

Tamaño de la región que se va a bloquear, en bytes. La región de las páginas afectadas incluye todas las páginas que contienen uno o más bytes en el intervalo desde el parámetro lpAddress a (lpAddress+dwSize). Esto significa que un intervalo de 2 bytes que coloca un límite de página hace que ambas páginas se bloquee.

Valor devuelto

Si la función se realiza correctamente, el valor devuelto es distinto de cero.

Si la función no se realiza correctamente, el valor devuelto es cero. Para obtener información de error extendida, llame a GetLastError.

Comentarios

Todas las páginas de la región especificada deben confirmarse. No se puede bloquear la memoria protegida con PAGE_NOACCESS .

Bloquear páginas en memoria puede degradar el rendimiento del sistema reduciendo la RAM disponible y obligando al sistema a intercambiar otras páginas críticas al archivo de paginación. Cada versión de Windows tiene un límite en el número máximo de páginas que un proceso puede bloquear. Este límite es intencionadamente pequeño para evitar una degradación grave del rendimiento. Las aplicaciones que necesitan bloquear un mayor número de páginas deben llamar primero a la función SetProcessWorkingSetSize para aumentar sus tamaños de conjunto de trabajo mínimo y máximo. El número máximo de páginas que un proceso puede bloquear es igual al número de páginas de su conjunto de trabajo mínimo menos una pequeña sobrecarga.

Las páginas que un proceso ha bloqueado permanecen en memoria física hasta que el proceso los desbloquea o finaliza. Se garantiza que estas páginas no se escriban en el archivo de página mientras están bloqueadas.

Para desbloquear una región de páginas bloqueadas, use la función VirtualUnlock . Las páginas bloqueadas se desbloquean automáticamente cuando finaliza el proceso.

Esta función no es como la función GlobalLock o LocalLock en que no incrementa un recuento de bloqueos y convierte un identificador en un puntero. No hay ningún recuento de bloqueos para las páginas virtuales, por lo que nunca se necesitan varias llamadas a la función VirtualUnlock para desbloquear una región de páginas.

Ejemplos

Para obtener un ejemplo, vea Creating Guard Pages.

Requisitos

   
Cliente mínimo compatible Windows XP [aplicaciones de escritorio | aplicaciones para UWP]
Servidor mínimo compatible Windows Server 2003 [aplicaciones de escritorio | aplicaciones para UWP]
Plataforma de destino Windows
Encabezado memoryapi.h (incluye Windows.h, Memoryapi.h)
Library onecore.lib
Archivo DLL Kernel32.dll

Consulte también

Funciones de administración de memoria

SetProcessWorkingSetSize

Funciones de memoria virtual

VirtualUnlock