HalpHvWatchdogDiscover
NTSTATUS __stdcall HalpHvWatchdogDiscover(){
__int64 v1;
_TIMER_INITIALIZATION_BLOCK NewTimer;
__int128 v3;
if( !byte_140C4A329 )
{
if( HalpIsMicrosoftCompatibleHvLoaded() )
{
if( (qword_140C4A120 & 0x20) == 0 )
{
v1 = __cpuid(1073741827, 0);
v3 = __PAIR64__(EBX(v1), EAX(v1));
if( (EDX(v1) & 0x400000) != 0 && (v3 & 0x100000000008i64) == 0x100000000008i64 )
{
memset(&NewTimer, 0i64, sizeof(NewTimer));
NewTimer.InternalData = 0i64;
NewTimer.InternalDataSize = 0;
NewTimer.FunctionTable.Initialize = (PLONG)HalpHvWatchdogInitialize;
NewTimer.Header.TableVersion = 1;
NewTimer.FunctionTable.ArmTimer = (PLONG)HalpHvWatchdogArm;
NewTimer.FunctionTable.Stop = HalpHvWatchdogStop;
NewTimer.Header.TableSize = 144;
NewTimer.CounterBitWidth = 64;
NewTimer.CounterFrequency = 10000000i64;
NewTimer.KnownType = TimerHypervisor;
NewTimer.Capabilities = 163872;
HalpTimerRegister(&NewTimer, 0i64);
}
}
}
}
return 0;
}Referenced by:
HalpTimerRegisterBuiltinPlugins