HalpHvWatchdogDiscover
INT64 __stdcall HalpHvWatchdogDiscover(){
__int64 v1;
TIMER_INITIALIZATION_BLOCK result;
__int128 v3;
if( !HalpTimerWatchdogPhysicalOnly )
{
if( HalpIsMicrosoftCompatibleHvLoaded() )
{
if( (HalpEnlightenment & 0x20) == 0 )
{
v1 = __cpuid(1073741827, 0);
v3 = __PAIR64__(EBX(v1), EAX(v1));
if( (EDX(v1) & 0x400000) != 0 && (v3 & 0x100000000008i64) == 0x100000000008i64 )
{
memset((INT64)&result, 0i64);
result.InternalData = 0i64;
result.InternalDataSize = 0;
result.FunctionTable.Initialize = (PTIMER_INITIALIZE)HalpHvWatchdogInitialize;
result.Header = (SOC_INITIALIZATION_HEADER)0x9000000001i64;
result.FunctionTable.ArmTimer = (PTIMER_ARM_TIMER)HalpHvWatchdogArm;
result.FunctionTable.Stop = (PTIMER_STOP)HalpHvWatchdogStop;
result.CounterBitWidth = 64;
result.CounterFrequency = 10000000i64;
result.KnownType = TimerHypervisor;
result.Capabilities = 163872;
HalpTimerRegister(&result, 0i64);
}
}
}
}
return 0i64;
}Referenced by:
HalpTimerRegisterBuiltinPlugins