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。

言论

如果需要指定 MM_SECURE_NO_CHANGE,则使用 mmSecureVirtualMemoryEx 而不是 mmSecureVirtualMemory,以便在提供的视图中不允许进行保护更改。

此函数的返回值只能与 MmUnsecureVirtualMemory一起使用。 驱动程序调用该例程以将范围返回到正常状态。

要求

要求 价值
最低支持的客户端 Windows 10 版本 1809
标头 ntddk.h
IRQL APC_LEVEL

另请参阅