HvlPhase0Initialize
NTSTATUS __stdcall HvlPhase0Initialize(_LOADER_PARAMETER_BLOCK *LoaderBlock){
NTSTATUS result;
PKINTERRUPT_ROUTINE **v3;
UINT32 v4;
PKINTERRUPT_ROUTINE *v5;
CHAR v6;
__int64 v7;
NTSTATUS v8;
LODWORD(HvlpFlags) = (HviIsAnyHypervisorPresent() != 0 ? 0x1000 : 0) | HvlpFlags & 0xFFFFEFFF;
if( HvlQueryConnection(0i64) >= 0 || (result = HvlpTryConfigureInterface(LoaderBlock), result >= 0) )
{
result = HvlpSetupBootProcessorEarlyHypercallPages(LoaderBlock);
if( result >= 0 )
{
LOBYTE(HvlHypervisorConnected) = 1;
HvlpDetermineEnlightenments();
result = HalSystemVectorDispatchEntry(v4, v3, v5);
if( result >= 0 )
{
if( (HvlpFlags & 2) != 0 )
{
strstr((UINT8 *)KeLoaderBlock_0->LoadOptions, (UINT8 *)"HYPERVISORDBG", v6);
if( v7 )
HvlpRootFlags |= 8u;
}
if( (HvlpFlags & 2) != 0 && (KeLoaderBlock_0->Extension->ResetReason.AdditionalInfo[7] & 0x2000) != 0 )
HvlpRootFlags |= 0x800u;
result = HvlpPhase0Enlightenments();
if( result >= 0 )
{
HvlpInitializeBootProcessor(LoaderBlock);
v8 = result;
if( result >= 0 )
{
HviGetHypervisorVersion(&HvlpHypervisorVersion);
return v8;
}
}
}
}
}
else if( result == -1070264320 )
{
return 0;
}
return result;
}Referenced by:
KiInitializeKernel