HalpTimerWatchdogTriggerSystemReset
NTSTATUS __stdcall HalpTimerWatchdogTriggerSystemReset(INT8 ResetViaClockInterrupt, INT64 a3){
_KDPC *v3;
NTSTATUS v4;
signed __int32 v6[8];
UINT64 a3a;
unsigned __int64 v8;
__int64 a5[2];
_KAFFINITY_EX Affinity;
memset(Affinity.Bitmap, 0i64, sizeof(Affinity.Bitmap));
v3 = (_KDPC *)HalpWatchdogTimer;
v4 = 0;
LODWORD(a3a) = 0;
if( !HalpWatchdogTimer )
return -1073741823;
if( ResetViaClockInterrupt )
{
qword_140C4A340 = -1i64;
_InterlockedOr(v6, 0);
*(_DWORD *)&Affinity.Count = 1310721;
memset(&Affinity.Reserved, 0i64, 0xA4u);
KeAddProcessorAffinityEx(&Affinity.Count, (unsigned int)KiClockTimerOwner);
HalRequestClockInterrupt(IpiAffinity, &Affinity);
}
else
{
qword_140C4A340 = -2i64;
_InterlockedOr(v6, 0);
HalpTimerGetClockRates((__int64)v3, &v8, &a3a);
return HalpSetTimer(v3, 3ui64, (unsigned int)a3a, 1, (INT64)a5);
}
return v4;
}Referenced by:
HalpTimerAlwaysOnClockInterrupt
HalpTimerClockInterrupt
HalpTimerClockIpiRoutine