MI_CLEAR_RESET_PTE
VOID __stdcall MI_CLEAR_RESET_PTE(_MMPTE *PointerPte){
INT64 v2;
union {unsigned __int64 Long;volatile unsigned __int64 VolatileLong;_MMPTE_HARDWARE Hard;_MMPTE_PROTOTYPE Proto;_MMPTE_SOFTWARE Soft;_MMPTE_TIMESTAMP TimeStamp;_MMPTE_TRANSITION Trans;_MMPTE_SUBSECTION Subsect;_MMPTE_LIST List;} v3;
union {unsigned __int64 Long;volatile unsigned __int64 VolatileLong;_MMPTE_HARDWARE Hard;_MMPTE_PROTOTYPE Proto;_MMPTE_SOFTWARE Soft;_MMPTE_TIMESTAMP TimeStamp;_MMPTE_TRANSITION Trans;_MMPTE_SUBSECTION Subsect;_MMPTE_LIST List;} v4;
int v5;
LODWORD(v2) = MI_READ_PTE_LOCK_FREE((INT64)PointerPte);
LODWORD(v3.Long) = MiUpdatePageFileHighInPte(v2, 0i64);
v4.Long = v3.Long;
LOBYTE(v5) = MiPteInShadowRange((UINT64)PointerPte);
if( v5 && (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 && (v4.Long & 1) != 0 )
v4.Long |= 0x8000000000000000ui64;
PointerPte->u.Long = v4.Long;
}Referenced by:
MiActOnPte
MiRestoreTransitionPte