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 |