HalpTimerInitializeEarlyStallSource
INT64 __fastcall HalpTimerInitializeEarlyStallSource(
_LOADER_PARAMETER_BLOCK *LoaderBlock,
INT64 a2,
INT64 a3,
INT64 a4,
INT64 a5,
INT64 a6,
INT64 a7,
INT64 a8){
int v9;
KDPC *Timer;
void *v11;
void *v12;
void *v13;
KDPC *v14;
unsigned int v15;
bool v16;
unsigned __int64 v17;
LODWORD(HalpRegisteredTimerCount) = 0;
HalpTimerLoaderBlock = LoaderBlock;
qword_140C4BEA8 = (__int64)&HalpRegisteredTimers;
HalpRegisteredTimers = (ULONG_PTR)&HalpRegisteredTimers;
v9 = HalpTimerRegisterBuiltinPluginsCommon(0i64);
if( v9 < 0 )
{
HalpTimerLastProblem = 14;
}
else if( (_DWORD)HalpRegisteredTimerCount && (Timer = (KDPC *)HalpFindTimer(0, 2, 0, 0, 1), (v14 = Timer) != 0i64) )
{
HalpPerformanceCounter = (ULONG_PTR)Timer;
HalpStallCounter = Timer;
v9 = HalpTimerInitialize((__int64)Timer, v11, v12, v13);
if( v9 >= 0 )
{
v15 = (__int64)v14[2].DpcData & 0xFFFFFFFB;
v16 = *(_QWORD *)&v14[3].TargetInfoAsUlong == 0i64;
LODWORD(v14[2].DpcData) = v15;
if( v16 )
{
LODWORD(v14[2].DpcData) = v15 | 8;
v17 = *(_QWORD *)(*((_QWORD *)LoaderBlock + 30) + 2496i64);
*(_QWORD *)&v14[3].TargetInfoAsUlong = v17;
if( v17 < 0x3E8 )
{
v14[4].TargetInfoAsUlong = 0;
HalpTimerLastProblem = 40;
HIDWORD(v14[3].DpcData) = 40;
v14[4].DpcListEntry.Next = (_SINGLE_LIST_ENTRY *)"minkernel\\hals\\lib\\timers\\common\\timer.c";
*(_QWORD *)&v14[3].TargetInfoAsUlong = 15625000i64;
LODWORD(v14[4].ProcessorHistory) = 1186;
}
}
else
{
HalpTimerProcessorFrequencyKnown = 1;
}
}
}
else
{
v9 = -1073741823;
HalpTimerLastProblem = 21;
}
return(unsigned int)v9;
}Referenced by:
No references.