VirtualProtect
9/8/2008
Essa função altera a proteção acessar em uma região de páginas confirmadas a espaço de endereço virtual da processo de chamada.
Syntax
BOOL VirtualProtect(
LPVOID lpAddress,
DWORD dwSize,
DWORD flNewProtect,
PDWORD lpflOldProtect
);
Parameters
lpAddress
[no] Ponteiro para o endereço de base da região de páginas cujos atributos de proteção acessar estão a ser alterado.Todas as páginas a região especificada devem ser alocadas em um único chamar a função de VirtualAlloc.
As páginas não podem espalhar adjacente regiões que foram alocadas por separar chama para O VirtualAlloc.
dwSize
[no] Especifica o tamanho, em bytes, da região cujos atributos de proteção acessar estão a ser alterado.A região de páginas afetadas inclui todas as páginas que contêm um ou mais bytes no intervalo a partir de lpAddress parâmetro para lpAddress sinal de mais dwSize. Isso significa que um 2-intervalo byte espalhados um limite página faz com que os atributos de proteção de ambas as páginas a ser alterada.
flNewProtect
[no] Especifica a nova proteção acessar.Você pode especificar qualquer um do seguinte sinalizadores, along with os sinalizadores modificador de proteção PAGE_GUARD e PAGE_NOCACHE, conforme necessário.
Valor Descrição PAGE_EXECUTE
Permite executar acessar à região confirmada de páginas.
Tentar ler ou gravar os resultados confirmada região em um violação de acesso.
PAGE_EXECUTE_READ
Ler e executar permite acessar à região confirmada de páginas.
Uma tentativa para gravar a região confirmada resulta em um violação de acesso.
PAGE_GUARD
Páginas na região se tornam páginas de proteção.
Tentar acessar uma página de proteção faz com que o sistema para aumentar uma exceção STATUS_GUARD_PAGE e desativar o status página de proteção. Proteção, portanto, páginas trabalhar como um alarme acessar one-shot.
O sinalizador PAGE_GUARD é um modificador de proteção página. Um aplicativo usa-lo com um dos outros página proteção sinalizadores, com uma exceção: Ele não pode ser usado com PAGE_NOACCESS.
Quando uma tentativa acessar leva o sistema para desativar Proteção página status, o subjacente proteção página terá sobre.
Se ocorrer uma exceção página de guarda durante um serviço sistema, a serviço geralmente retorna um indicador status falha.
PAGE_NOACCESS
Desativa todos os acessar à região confirmada de páginas.
Tentar ler a partir, Gravação para ou executar nos resultados da região confirmada em uma exceção violação de acesso, chamado uma falha de proteção geral (GP).
PAGE_NOCACHE
Permite que nenhum cache das regiões confirmadas de páginas.
Os atributos hardware para o físico memória deve ser especificada como Não armazenar em cache. Isso não é recomendável para uso geral. Ele é útil para drivers dispositivo; de exemplo, mapeamento um vídeo reserva quadro com nenhum cache.
Este sinalizador é um modificador de proteção página e é válido quando usado com uma proteção página Other Than PAGE_NOACCESS.
PAGE_READONLY
Ler permite acessar à região confirmada de páginas.
Uma tentativa para gravar a região confirmada resulta em um violação de acesso.
Se o sistema diferencia acessar Read-only e acessar executar, tentar executar codificar nos resultados da região confirmada em um violação de acesso.
lpflOldProtect
[out] Ponteiro longo para uma variável que a função define como o valor de proteção acessar anterior da primeira página na região especificada de páginas.Se este parâmetro é NULL ou não apontar para um válido variável, o função falhar.
Return Value
Nonzero indica sucesso. Zero indica falha. Para informações de erro estendidas get, chamar GetLastError.
Remarks
O seguinte exemplo de código mostra como usar o VirtualProtect função para alteração as características das páginas na memória virtual que foram alocadas com acessar READ_WRITE para READ_ONLY.
DWORD dwOldProtect;
DWORD dwSize = (2 * PAGE_SIZE); //To change a set of two pages,
//whose size was defined earlier as PAGE_SIZE
if (!VirtualProtect (lpPage, // Beginning of the set of pages to change
dwSize, // Length, in bytes, of the set of pages
//to change
PAGE_READONLY, // What to change it to
&dwOldProtect // Place to store the old setting
))
{// Your error-handling code goes here.
}
Requirements
Header | winbase.h |
Library | coredll.lib |
Windows Embedded CE | Windows CE 1.0 and later |
Windows Mobile | Windows Mobile Version 5.0 and later |
See Also
Reference
Memory Management Functions
VirtualAlloc