Função VirtualLock (memoryapi.h)

Bloqueia a região especificada do espaço de endereço virtual do processo na memória física, garantindo que o acesso subsequente à região não incorrerá em uma falha de página.

Sintaxe

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

Parâmetros

[in] lpAddress

Um ponteiro para o endereço base da região de páginas a ser bloqueada.

[in] dwSize

O tamanho da região a ser bloqueada, em bytes. A região das páginas afetadas inclui todas as páginas que contêm um ou mais bytes no intervalo do parâmetro lpAddress até (lpAddress+dwSize). Isso significa que um intervalo de 2 bytes que atravessa um limite de página faz com que ambas as páginas sejam bloqueadas.

Valor retornado

Se a função for bem-sucedida, o valor retornado será diferente de zero.

Se a função falhar, o valor retornado será zero. Para obter informações de erro estendidas, chame GetLastError.

Comentários

Todas as páginas na região especificada devem ser confirmadas. A memória protegida com PAGE_NOACCESS não pode ser bloqueada.

Bloquear páginas na memória pode prejudicar o desempenho do sistema reduzindo a RAM disponível e forçando o sistema a trocar outras páginas críticas pelo arquivo de paginação. Cada versão do Windows tem um limite no número máximo de páginas que um processo pode bloquear. Esse limite é intencionalmente pequeno para evitar uma degradação grave do desempenho. Os aplicativos que precisam bloquear um número maior de páginas devem primeiro chamar a função SetProcessWorkingSetSize para aumentar seus tamanhos mínimos e máximos do conjunto de trabalho. O número máximo de páginas que um processo pode bloquear é igual ao número de páginas em seu conjunto de trabalho mínimo menos uma pequena sobrecarga.

As páginas que um processo bloqueou permanecem na memória física até que o processo as desbloqueie ou termine. Essas páginas têm a garantia de não serem gravadas no arquivo de página enquanto estão bloqueadas.

Para desbloquear uma região de páginas bloqueadas, use a função VirtualUnlock . As páginas bloqueadas são desbloqueadas automaticamente quando o processo é encerrado.

Essa função não é como a função GlobalLock ou LocalLock , pois não incrementa uma contagem de bloqueios e converte um identificador em um ponteiro. Não há nenhuma contagem de bloqueios para páginas virtuais, portanto, várias chamadas para a função VirtualUnlock nunca são necessárias para desbloquear uma região de páginas.

Exemplos

Para obter um exemplo, consulte Criando páginas de proteção.

Requisitos

   
Cliente mínimo com suporte Windows XP [aplicativos da área de trabalho | aplicativos UWP]
Servidor mínimo com suporte Windows Server 2003 [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho memoryapi.h (inclua Windows.h, Memoryapi.h)
Biblioteca onecore.lib
DLL Kernel32.dll

Confira também

Funções de gerenciamento da memória

SetProcessWorkingSetSize

Funções de memória virtual

VirtualUnlock