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.