24{
26 PFN_NUMBER TableBasePfn, HyperPfn, HyperPdPfn, HyperPtPfn;
32
33
34 TableBasePfn = DirectoryTableBase[0] >>
PAGE_SHIFT;
35 HyperPfn = DirectoryTableBase[1] >>
PAGE_SHIFT;
36
37
38
39
40
41
45 if(!HyperPdPfn)
46 {
51 }
54 if(!HyperPtPfn)
55 {
59 }
60 else
61 {
63 }
64
65
67 if (!SystemPte)
69
70
72
73
76
77
83
84
86
87
89
90
93 PageTablePointer[TableIndex] =
TempPte;
94
95
98 PageTablePointer[TableIndex] =
TempPte;
99
100
102 *SystemPte = PdePte;
104
105
108
109
111 *SystemPte = PdePte;
113
114
117
118
120 *SystemPte = PdePte;
122
123
126 PageTablePointer[TableIndex] =
TempPte;
127
128
130
132}
HARDWARE_PTE_ARMV6 TempPte
_Must_inspect_result_ _In_ PLARGE_INTEGER _In_ PLARGE_INTEGER _In_ ULONG _In_ PFILE_OBJECT _In_ PVOID Process
__INTRIN_INLINE void __invlpg(void *Address)
PFN_NUMBER NTAPI MiRemoveAnyPage(IN ULONG Color)
VOID NTAPI MiReleaseSystemPtes(IN PMMPTE StartingPte, IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType)
FORCEINLINE VOID MI_MAKE_HARDWARE_PTE_KERNEL(IN PMMPTE NewPte, IN PMMPTE MappingPte, IN ULONG_PTR ProtectionMask, IN PFN_NUMBER PageFrameNumber)
PMMPTE NTAPI MiReserveSystemPtes(IN ULONG NumberOfPtes, IN MMSYSTEM_PTE_POOL_TYPE SystemPtePoolType)
FORCEINLINE VOID MI_WRITE_VALID_PTE(IN PMMPTE PointerPte, IN MMPTE TempPte)
#define MI_GET_NEXT_PROCESS_COLOR(x)
FORCEINLINE PFN_NUMBER MiRemoveZeroPageSafe(IN ULONG Color)
VOID NTAPI MiZeroPhysicalPage(IN PFN_NUMBER PageFrameIndex)
FORCEINLINE ULONG MiAddressToPxi(PVOID Address)
FORCEINLINE PMMPTE MiAddressToPxe(PVOID Address)
FORCEINLINE ULONG MiAddressToPti(PVOID Address)
#define MiPteToAddress(_Pte)
#define RtlCopyMemory(Destination, Source, Length)
#define RtlZeroMemory(Destination, Length)
_Requires_lock_held_ Interrupt _Releases_lock_ Interrupt _In_ _IRQL_restores_ KIRQL OldIrql