Função MmSecureVirtualMemoryEx (ntddk.h)

Essa rotina investiga o intervalo de endereços solicitado e protege o intervalo de endereços especificado de tornar sua proteção mais restritiva e ser excluída.

Sintaxe

HANDLE MmSecureVirtualMemoryEx(
  PVOID  Address,
  SIZE_T Size,
  ULONG  ProbeMode,
  ULONG  Flags
);

Parâmetros

Address

Ponteiro para o endereço base para sondar e proteger.

Size

Especifica o tamanho, em bytes, do intervalo a ser seguro.

ProbeMode

Especifica a proteção de página mais restritiva permitida. Use PAGE_READWRITE para especificar que o intervalo de endereços deve permanecer legível e gravável ou usar PAGE_READONLY para especificar que o intervalo de endereços só deve permanecer legível.

ProbeMode Significado
PAGE_READWRITE A proteção não pode ser alterada para PAGE_NOACCESS ou PAGE_READONLY. Todas as outras alterações de proteção são permitidas.
PAGE_READONLY A proteção não pode ser alterada para PAGE_NOACCESS. Todas as outras alterações de proteção são permitidas.

Flags

Especifica um ou mais dos seguintes sinalizadores:

Sinalizador Descrição
MM_SECURE_EXCLUSIVE A proteção só terá êxito se não houver outros seguros já fixados em qualquer lugar no VAD em questão.
MM_SECURE_NO_CHANGE Depois de aplicada, nenhuma alteração de proteção é permitida para a região de endereço virtual fornecida. A região ainda poderá ser excluída se o processo estiver saindo.
MM_SECURE_USER_MODE_ONLY A proteção especificada por essa proteção só será aplicada a chamadas subsequentes do modo de usuário que estão tentando alterar a proteção (os chamadores do modo kernel ignorarão essa proteção).
MM_SECURE_NO_INHERIT Se o processo for clonado, ao contrário do processo pai, o VAD do processo filho não será protegido.

Retornar valor

Retorna um valor semelhante a um identificador a ser usado apenas para desacasar o intervalo.

Se o intervalo não puder ser bloqueado devido a problemas de proteção, memória não confirmada ou parâmetros inválidos, essa rotina retornará NULL.

Comentários

Use MmSecureVirtualMemoryEx em vez de MmSecureVirtualMemory se precisar especificar MM_SECURE_NO_CHANGE para que nenhuma alteração de proteção seja permitida no modo de exibição fornecido.

O valor retornado dessa função só pode ser usado com MmUnsecureVirtualMemory. O driver chama essa rotina para retornar o intervalo para um estado normal.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 10, versão 1809
Cabeçalho ntddk.h
IRQL APC_LEVEL

Confira também