MmFreeNonCachedMemory
VOID __stdcall MmFreeNonCachedMemory(PVOID BaseAddress, UINT64 a2){
UINT64 v2;
MMPTE *PteAddress;
MDL *v4;
INT64 DemandZeroPte;
INT64 v6;
UINT64 v7;
v2 = (a2 >> 12) + ((a2 & 0xFFF) != 0);
PteAddress = MiGetPteAddress(BaseAddress);
v7 = MI_READ_PTE_LOCK_FREE((INT64)PteAddress);
v4 = (MDL *)*((_QWORD *)MmGetPfnDb() + 6 * ((v7 >> 12) & 0xFFFFFFFFFi64) + 2);
DemandZeroPte = MiMakeDemandZeroPte(4);
MiSetPfnOriginalPte(v6, DemandZeroPte);
MmFreePagesFromMdl(v4);
ExFreePoolWithTag(v4, 0);
MiReleasePtes((INT64)&qword_140C4EC80, (INT64)PteAddress, (unsigned int)v2);
}Referenced by:
No references.