Compartir a través de


Trabajar con páginas

Para determinar el tamaño de una página en el equipo actual, use la función GetSystemInfo .

Las funciones VirtualQuery y VirtualQueryEx devuelven información sobre una región de páginas consecutivas que comienzan en una dirección especificada en el espacio de direcciones de un proceso. VirtualQuery devuelve información sobre la memoria en el proceso de llamada. VirtualQueryEx devuelve información sobre la memoria en un proceso especificado y se usa para admitir depuradores que necesitan información sobre un proceso que se está depurando. La región de las páginas está limitada por la dirección especificada redondeada hacia abajo hasta el límite de página más cercano. Se extiende a través de todas las páginas posteriores con los siguientes atributos en común:

  • El estado de todas las páginas es el mismo: confirmado, reservado o gratuito.
  • Si la página inicial no es gratuita, todas las páginas de la región forman parte de la misma asignación inicial de páginas reservadas por una llamada a VirtualAlloc.
  • La protección de acceso de todas las páginas es la misma (es decir, PAGE_READONLY, PAGE_READWRITE o PAGE_NOACCESS).

La función VirtualLock permite que un proceso bloquee una o varias páginas de memoria confirmada en memoria física (RAM), lo que impide que el sistema cambie las páginas al archivo de paginación. Se puede usar para asegurarse de que los datos críticos son accesibles sin acceso al disco. El bloqueo de páginas en memoria es peligroso porque restringe la capacidad del sistema para administrar la memoria. El uso excesivo de VirtualLock puede degradar el rendimiento del sistema haciendo que el código ejecutable se intercambie al archivo de paginación. La función VirtualUnlock desbloquea la memoria bloqueada por VirtualLock.

La función VirtualProtect permite a un proceso modificar la protección de acceso de cualquier página confirmada en el espacio de direcciones de un proceso. Por ejemplo, un proceso puede asignar páginas de lectura y escritura para almacenar datos confidenciales y, a continuación, puede cambiar el acceso a solo lectura o sin acceso para protegerse contra la sobrescritura accidental. VirtualProtect se usa normalmente con páginas asignadas por VirtualAlloc, pero también funciona con páginas confirmadas por cualquiera de las otras funciones de asignación. Sin embargo, VirtualProtect cambia la protección de páginas completas y los punteros devueltos por las demás funciones no están necesariamente alineados en los límites de página. La función VirtualProtectEx es similar a VirtualProtect, salvo que cambia la protección de la memoria en un proceso especificado. Cambiar la protección es útil para los depuradores al acceder a la memoria de un proceso que se está depurando.