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 |