Compartilhar via


VirtualProtect

Windows Mobile SupportedWindows Embedded CE Supported

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

Other Resources

CeSetMemoryAttributes