HvlPhase1Initialize
NTSTATUS __stdcall HvlPhase1Initialize(_LOADER_PARAMETER_BLOCK *LoaderBlock){
__int64 v3;
UINT64 v4;
__int128 v5;
_LARGE_INTEGER PhysicalAddress;
PhysicalAddress.QuadPart = 0i64;
if( (unsigned __int8)HviIsAnyHypervisorPresent() && (HvlpRootFlags & 4) == 0 )
{
HvlpHvIdentityInfoCallbackRecord.State = 0;
KeRegisterBugCheckReasonCallback(
&HvlpHvIdentityInfoCallbackRecord,
(PKBUGCHECK_REASON_CALLBACK_ROUTINE)HvlpHvIdentityInfoCallback,
KbCallbackSecondaryDumpData,
&HvlpComponentName);
}
if( (_BYTE)HvlHypervisorConnected )
{
MmMarkHypercallPageRetpolineBit();
HvlpSetupCachedHypercallPages(KeGetCurrentPrcb());
HvlpInitializePowerStatistics();
if( (HvlpRootFlags & 0x10) != 0 )
{
v5 = 0i64;
if( (int)HvlpMapStatisticsPage(1, &v5, &PhysicalAddress) >= 0 )
{
MmMapIoSpaceEx(PhysicalAddress, 0x1000ui64, 2ui64);
HvlpHypervisorStatsPage = v3;
}
}
HvlConfigureMemoryZeroingOnReset(1);
LODWORD(HvlpFlags) = HvlpFlags | 8;
VslpIumPhase0Initialize((INT64)LoaderBlock);
if( (HvlpRootFlags & 4) != 0 || VslVsmEnabled )
HvlpInitializeHvCrashdump(*((_QWORD *)LoaderBlock + 30) + 2504i64, v4);
}
return 0;
}Referenced by:
InitBootProcessor