HalpInitializeTimers
NTSTATUS __stdcall HalpInitializeTimers(_LOADER_PARAMETER_BLOCK *LoaderBlock){
KDPC *v2;
PVOID v3;
PVOID v4;
PVOID v5;
__int64 v6;
NTSTATUS ReferencePage;
ULONG_PTR *Timer;
ULONG_PTR v9;
int v10;
int v11;
unsigned int v12;
WCHAR *v13;
INT64 result[17];
int v16;
int v17;
memset((INT64)result, 0i64);
HalpTimerLoaderBlock = LoaderBlock;
v2 = HalpStallCounter;
HalpOriginalStallTimer = (__int64)HalpStallCounter;
HalpTimerGetInternalData(HalpStallCounter, v3, v4, v5);
ReferencePage = ((__int64(__fastcall *)(__int64))v2[1].SystemArgument1)(v6);
if( ReferencePage < 0 )
{
v2[4].TargetInfoAsUlong = ReferencePage;
HalpTimerLastProblem = 15;
HIDWORD(v2[3].DpcData) = 15;
v2[4].DpcListEntry.Next = (_SINGLE_LIST_ENTRY *)"minkernel\\hals\\lib\\timers\\common\\timer.c";
LODWORD(v2[4].ProcessorHistory) = 1552;
}
else
{
ReferencePage = HalpTimerRegisterBuiltinPluginsCommon(1i64);
if( ReferencePage < 0 )
{
HalpTimerLastProblem = 14;
}
else
{
Timer = HalpFindTimer(5, 0, 0, 0, 1);
if( Timer )
{
v9 = Timer[36];
v10 = *((_DWORD *)Timer + 57);
v11 = *((_DWORD *)Timer + 71);
v16 = v10;
v12 = *(unsigned __int16 *)(v9 + 24);
v13 = *(WCHAR **)(v9 + 32);
v17 = v11;
HalpTimerBuildKnownResourceIdString((INT64)result, v12 >> 1, v13);
}
ReferencePage = HalpTimerSelectRoles();
if( ReferencePage < 0 || (ReferencePage = HalpTimerCreateReferencePage(), ReferencePage < 0) )
LABEL_13:
KeBugCheckEx(0x5Cu, 0x110ui64, 0x5250631ui64, HalpTimerLastProblem, ReferencePage);
HalpOriginalPerformanceCounter = HalpPerformanceCounter;
HalpTimerDpc.DeferredRoutine = (void(__fastcall *)(_KDPC *, void *, void *, void *))HalpTimerDpcRoutine;
qword_140C4BD70 = (__int64)&qword_140C4BD68;
qword_140C4BD68 = (__int64)&qword_140C4BD68;
off_140C006A8[0] = (__int64(__fastcall *)())HalpTimerReportIdleStateUsage;
HalpTimerPeriodicTimer = 8i64;
off_140C006A0[0] = (__int64(__fastcall *)())HalpTimerQueryWakeTime;
HalpTimerDpc.TargetInfoAsUlong = 275;
HalpTimerDpc.DeferredContext = 0i64;
HalpTimerDpc.DpcData = 0i64;
HalpTimerDpc.ProcessorHistory = 0i64;
qword_140C4BD78 = 0i64;
dword_140C4BD9C = 0;
word_140C4BD98 = 0;
if( HalpAlwaysOnCounter )
HalpTimerMaximumAllowableDrift = HalpTimerCalculateMaximumAllowableDrift();
}
}
if( ReferencePage < 0 )
goto LABEL_13;
return ReferencePage;
}Referenced by:
No references.