Add support for transitioning PTE to invalid state
All checks were successful
Builds / ExectOS (amd64, release) (push) Successful in 35s
Builds / ExectOS (i686, release) (push) Successful in 33s
Builds / ExectOS (amd64, debug) (push) Successful in 44s
Builds / ExectOS (i686, debug) (push) Successful in 41s

This commit is contained in:
2026-01-03 00:41:56 +01:00
parent 0159262ee0
commit cc76ea40ee
7 changed files with 213 additions and 0 deletions

View File

@@ -44,6 +44,7 @@ namespace MM
PMMPTE StartPte);
XTAPI ULONG GetPteOffset(IN PVOID Address);
XTAPI ULONG GetPteSize(VOID);
XTAPI ULONG GetPteSoftwareProtection(IN PMMPTE PtePointer);
XTAPI ULONG GetPteSoftwarePrototype(IN PMMPTE PtePointer);
XTAPI ULONG GetPteSoftwareTransition(IN PMMPTE PtePointer);
VIRTUAL XTAPI PVOID GetPteVirtualAddress(IN PMMPTE PtePointer) = 0;
@@ -65,6 +66,8 @@ namespace MM
XTAPI VOID SetPteCaching(IN PMMPTE PtePointer,
IN BOOLEAN CacheDisable,
IN BOOLEAN WriteThrough);
XTAPI VOID TransitionPte(IN PMMPTE PointerPte,
IN ULONG_PTR Protection);
XTAPI VOID WritePte(IN PMMPTE Pte,
IN MMPTE Value);
} PAGEMAP, *PPAGEMAP;

View File

@@ -41,6 +41,7 @@ namespace MM
STATIC XTAPI LONG GetPteDistance(PMMPTE EndPte,
PMMPTE StartPte);
STATIC XTAPI ULONG GetPteSize(VOID);
STATIC XTAPI ULONG GetPteSoftwareProtection(IN PMMPTE PtePointer);
STATIC XTAPI ULONG GetPteSoftwarePrototype(IN PMMPTE PtePointer);
STATIC XTAPI ULONG GetPteSoftwareTransition(IN PMMPTE PtePointer);
STATIC XTAPI PVOID GetPteVirtualAddress(IN PMMPTE PtePointer);
@@ -63,6 +64,8 @@ namespace MM
IN BOOLEAN WriteThrough);
STATIC XTAPI VOID WritePte(IN PMMPTE Pte,
IN MMPTE Value);
STATIC XTAPI VOID TransitionPte(IN PMMPTE PointerPte,
IN ULONG_PTR Protection);
STATIC XTFASTCALL VOID ZeroPages(IN PVOID Address,
IN ULONG Size);