Partilhar via


Trabalhando com páginas

Para determinar o tamanho de uma página no computador atual, use a função GetSystemInfo .

As funções VirtualQuery e VirtualQueryEx retornam informações sobre uma região de páginas consecutivas começando em um endereço especificado no espaço de endereço de um processo. VirtualQuery retorna informações sobre memória no processo de chamada. VirtualQueryEx retorna informações sobre memória em um processo especificado e é usado para dar suporte a depuradores que precisam de informações sobre um processo que está sendo depurado. A região das páginas é limitada pelo endereço especificado arredondado para baixo até o limite de página mais próximo. Ele se estende por todas as páginas subsequentes com os seguintes atributos em comum:

  • O estado de todas as páginas é o mesmo: confirmado, reservado ou gratuito.
  • Se a página inicial não for gratuita, todas as páginas na região serão parte da mesma alocação inicial de páginas reservadas por uma chamada para VirtualAlloc.
  • A proteção de acesso de todas as páginas é a mesma (ou seja, PAGE_READONLY, PAGE_READWRITE ou PAGE_NOACCESS).

A função VirtualLock permite que um processo bloqueie uma ou mais páginas de memória confirmada em memória física (RAM), impedindo que o sistema troque as páginas para o arquivo de paginação. Ele pode ser usado para garantir que os dados críticos estejam acessíveis sem acesso ao disco. Bloquear páginas na memória é perigoso porque restringe a capacidade do sistema de gerenciar a memória. O uso excessivo do VirtualLock pode prejudicar o desempenho do sistema fazendo com que o código executável seja trocado para o arquivo de paginação. A função VirtualUnlock desbloqueia a memória bloqueada pelo VirtualLock.

A função VirtualProtect permite que um processo modifique a proteção de acesso de qualquer página confirmada no espaço de endereço de um processo. Por exemplo, um processo pode alocar páginas de leitura/gravação para armazenar dados confidenciais e, em seguida, pode alterar o acesso para somente leitura ou sem acesso para proteger contra substituição acidental. O VirtualProtect normalmente é usado com páginas alocadas por VirtualAlloc, mas também funciona com páginas confirmadas por qualquer uma das outras funções de alocação. No entanto, o VirtualProtect altera a proteção de páginas inteiras e os ponteiros retornados pelas outras funções não são necessariamente alinhados nos limites da página. A função VirtualProtectEx é semelhante a VirtualProtect, exceto que altera a proteção da memória em um processo especificado. Alterar a proteção é útil para depuradores no acesso à memória de um processo que está sendo depurado.