Поделиться через


Функция 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

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

Флаг Описание
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

См. также