Функция MmSecureVirtualMemoryEx (ntddk.h)

Эта подпрограмма проверяет запрошенный диапазон адресов и защищает указанный диапазон адресов от более строгой защиты и удаления.

Синтаксис

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

Параметры

Address

Указатель на базовый адрес для проверки и защиты.

Size

Указывает размер диапазона для защиты (в байтах).

ProbeMode

Указывает наиболее ограниченную защиту страницы, которая разрешена. Используйте PAGE_READWRITE, чтобы указать, что диапазон адресов должен оставаться доступным для чтения и записи, или используйте PAGE_READONLY, чтобы указать, что диапазон адресов должен оставаться только читаемым.

ProbeMode Значение
PAGE_READWRITE Защиту нельзя изменить на PAGE_NOACCESS или PAGE_READONLY. Все остальные изменения защиты разрешены.
PAGE_READONLY Защиту нельзя изменить на PAGE_NOACCESS. Все остальные изменения защиты разрешены.

Flags

Задает один или несколько следующих флагов:

Flag Описание
MM_SECURE_EXCLUSIVE Защита выполняется успешно только в том случае, если нет других защищенных элементов безопасности, уже закрепленных в любом месте на рассматриваемом VAD.
MM_SECURE_NO_CHANGE После применения изменения защиты для указанного региона виртуального адреса не допускаются. Регион по-прежнему можно удалить, если процесс завершается.
MM_SECURE_USER_MODE_ONLY Защита, указанная этой защитой, будет применяться только к последующим вызовам из пользовательского режима, которые пытаются изменить защиту (вызывающие объекты режима ядра будут обходить эту защиту).
MM_SECURE_NO_INHERIT Если процесс клонирован, то, в отличие от родительского процесса, VAD дочернего процесса не будет защищен.

Возвращаемое значение

Возвращает значение, напоминающее дескриптор, используемый только для отмены безопасности диапазона.

Если диапазон не может быть заблокирован из-за проблем с защитой, незафиксированного объема памяти или недопустимых параметров, эта подпрограмма возвращает значение NULL.

Комментарии

Используйте MmSecureVirtualMemoryEx вместо MmSecureVirtualMemory, если необходимо указать MM_SECURE_NO_CHANGE , чтобы в предоставленном представлении не было разрешено изменение защиты.

Возвращаемое значение этой функции можно использовать только с MmUnsecureVirtualMemory. Драйвер вызывает подпрограмму, чтобы вернуть диапазон в нормальное состояние.

Требования

Требование Значение
Минимальная версия клиента Windows 10, версия 1809
Верхняя часть ntddk.h
IRQL APC_LEVEL

См. также раздел