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 |