MiRotateComplete

VOID __stdcall MiRotateComplete(_MI_ROTATE_BLOCK *CompletedRotateBlock){
  _EPROCESS *Process; 
  _MMSUPPORT_INSTANCE *p_Instance; 
  _MI_ROTATE_BLOCK **p_RotateInProgress; 
  _MMSUPPORT_SHARED *SharedVm; 
  UINT8 v6; 
  UINT8 v7; 
  _MI_ROTATE_BLOCK *i; 

  Process = KeGetCurrentThread()->ApcState.Process;
  p_Instance = &Process->Vm.Instance;
  p_RotateInProgress = (_MI_ROTATE_BLOCK **)&Process->RotateInProgress;
  SharedVm = MiGetSharedVm(&Process->Vm.Instance);
  v6 = ExAcquireSpinLockExclusive((INT64 *)&SharedVm->WorkingSetLock);
  SharedVm->GoodCitizenWaiting = 0;
  v7 = v6;
  for( i = *p_RotateInProgress; i != CompletedRotateBlock; i = *(_MI_ROTATE_BLOCK **)i )
    p_RotateInProgress = (_MI_ROTATE_BLOCK **)i;
  *p_RotateInProgress = *(_MI_ROTATE_BLOCK **)i;
  MiUnlockWorkingSetExclusive(p_Instance, v7);
}

Referenced by:

MmRotatePhysicalView