HalpTimerWatchdogPreResetInterrupt
char __fastcall HalpTimerWatchdogPreResetInterrupt(__int64 a1, __int64 a2, void *a3, void *a4){
__int64 v4;
__int64 v5;
UINT64 v6;
ULONG_PTR v7;
ULONG_PTR BugCheckParameter4;
ULONG_PTR v9;
UINT64 QpcTimeStamp;
HalpTimerGetInternalData((KDPC *)HalpWatchdogTimer, HalpWatchdogTimer, a3, a4);
(*(void(__fastcall **)(__int64))(v4 + 120))(v5);
if( (unsigned __int64)HalpTimerWatchdogResetCount <= 0xFFFFFFFFFFFFFFFDui64 )
{
v7 = *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - HalpTimerWatchdogLastReset;
if( *(_QWORD *)&KUSER_SHARED_DATA.InterruptTime.LowPart - HalpTimerWatchdogLastReset < (unsigned __int64)HalpTimerWatchdogResetCount >> 1 )
{
BugCheckParameter4 = (unsigned int)KiClockTimerOwner;
v9 = KeQueryInterruptTimePrecise(&QpcTimeStamp);
KeBugCheckEx(0x101u, v7, (unsigned __int64)HalpTimerWatchdogResetCount >> 1, v9, BugCheckParameter4);
}
HalpTimerWatchdogResetCountdown(v6);
}
return 1;
}Referenced by:
No references.