ExCleanTimerResolutionRequest

VOID __stdcall ExCleanTimerResolutionRequest(){
  _EPROCESS *Process; 
  unsigned __int64 v1; 
  _LIST_ENTRY *Flink; 
  _LIST_ENTRY *Blink; 
  _PO_DIAG_STACK_RECORD *TimerResolutionStackRecord; 
  UINT64 ActualTime; 

  LODWORD(ActualTime) = 0;
  Process = KeGetCurrentThread()->ApcState.Process;
  if( (Process->Flags & 0x1000) != 0 )
    ZwSetTimerResolution((unsigned int)KeMaximumIncrement, 0, &ActualTime);
  ExAcquireTimeRefreshLock(1u);
  v1 = (unsigned __int8)KeAcquireSpinLockRaiseToDpc((UINT64 *)&ExBootDevicesRemovedEvent + 98);
  Flink = Process->TimerResolutionLink.Flink;
  Blink = Process->TimerResolutionLink.Blink;
  if( Flink->Blink != &Process->TimerResolutionLink || Blink->Flink != &Process->TimerResolutionLink )
    __fastfail(3u);
  Blink->Flink = Flink;
  Flink->Blink = Blink;
  KxReleaseSpinLock((UINT64 *)&ExBootDevicesRemovedEvent + 98);
  __writecr8(v1);
  TimerResolutionStackRecord = Process->TimerResolutionStackRecord;
  Process->TimerResolutionStackRecord = 0i64;
  ExReleaseTimeRefreshLock();
  if( TimerResolutionStackRecord )
    PoDiagFreeUsermodeStack(TimerResolutionStackRecord);
}

Referenced by:

PspExitProcess