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