MiBeginHoldingDirtyFaults

void __fastcall MiBeginHoldingDirtyFaults(__int64 a1, __int64 a2){
  _ETHREAD *CurrentThread; 
  _EPROCESS *Process; 
  _MMSUPPORT_SHARED *SharedVm; 
  UINT8 v7; 
  __int64 v8; 
  __int64 *v9; 

  CurrentThread = (_ETHREAD *)KeGetCurrentThread();
  Process = CurrentThread->Tcb.ApcState.Process;
  --CurrentThread->Tcb.SpecialApcDisable;
  SharedVm = MiGetSharedVm(&Process->Vm.Instance);
  v7 = ExAcquireSpinLockExclusive((INT64 *)&SharedVm->WorkingSetLock);
  SharedVm->GoodCitizenWaiting = 0;
  v8 = a1 + 24;
  v9 = *(__int64 **)(v8 + 8);
  if( *v9 != v8 )
    __fastfail(3u);
  *(_QWORD *)(a2 + 8) = v9;
  *(_QWORD *)a2 = v8;
  *v9 = a2;
  *(_QWORD *)(v8 + 8) = a2;
  MiUnlockWorkingSetExclusive(&Process->Vm.Instance, v7);
  MiMoveDirtyBitsToPfns(*(_MMPTE **)(a2 + 16), *(_MMPTE **)(a2 + 24), 0i64, FlushKernel);
}

Referenced by:

MiPerformImageHotPatch