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