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