HvlpInitializeHvCrashdump
VOID __fastcall HvlpInitializeHvCrashdump(UINT64 CrashdumpAreaSpa, UINT64 PageCount){
int v2;
_LARGE_INTEGER v3;
VOID *IndependentPages;
v2 = *(_DWORD *)(CrashdumpAreaSpa + 4);
v3 = *(_LARGE_INTEGER *)(CrashdumpAreaSpa + 16);
*(&stru_140C452E0 + 2047) = *(_DWORD *)CrashdumpAreaSpa;
*(&stru_140C452E0 + 1024) = *(_QWORD *)(CrashdumpAreaSpa + 8);
*(&stru_140C452E0 + 2046) = v2;
*(&stru_140C452E0 + 1022) = v3.QuadPart;
if( v2 )
{
*(&stru_140C452E0 + 1021) = MmMapIoSpaceEx(v3, (unsigned int)(v2 << 12), 2ui64);
if( !*(&stru_140C452E0 + 1021) )
goto LABEL_16;
}
IndependentPages = MmAllocateIndependentPages(0x1000ui64, 0xFFFFFFFFui64);
qword_140C47330 = IndependentPages;
if( IndependentPages )
memset(IndependentPages, 0i64, 0x1000u);
if( !VslVsmEnabled )
{
*(&stru_140C452E0 + 8020) = 0;
if( !KeRegisterBugCheckReasonCallback(
(PKBUGCHECK_REASON_CALLBACK_RECORD)((char *)&stru_140C452E0 + 7976),
(PKBUGCHECK_REASON_CALLBACK_ROUTINE)HvlBugCheckCallbackRoutine,
KbCallbackSecondaryDumpData,
(PUCHAR)"HypervisorCrashdumpArea") )
goto LABEL_16;
*(&stru_140C452E0 + 8068) = 0;
if( !KeRegisterBugCheckReasonCallback(
(PKBUGCHECK_REASON_CALLBACK_RECORD)((char *)&stru_140C452E0 + 8024),
(PKBUGCHECK_REASON_CALLBACK_ROUTINE)HvlAddPagesCallbackRoutine,
KbCallbackAddPages,
(PUCHAR)"HypervisorCrashdumpArea2") )
goto LABEL_16;
*(&stru_140C452E0 + 996) = KeRegisterNmiCallback(HvlCrashdumpCallbackRoutine, 0i64);
qword_140C472E8 = MmAllocateMappingAddress(0x1000ui64, 0x204C5648ui64);
if( !qword_140C472E8 )
goto LABEL_16;
if( !VslVsmEnabled )
return;
}
*(&stru_140C452E0 + 8116) = 0;
if( KeRegisterBugCheckReasonCallback(
(PKBUGCHECK_REASON_CALLBACK_RECORD)((char *)&stru_140C452E0 + 8072),
HvlSkBugCheckCallbackRoutine,
KbCallbackSecondaryDumpData,
(PUCHAR)"SecureKernelCrashdumpArea") )
{
if( (HvlpFlags & 2) == 0
|| (*(&stru_140C452E0 + 8068) = 0,
KeRegisterBugCheckReasonCallback(
(PKBUGCHECK_REASON_CALLBACK_RECORD)((char *)&stru_140C452E0 + 8024),
HvlAddSecureHvPagesCallbackRoutine,
KbCallbackAddPages,
(PUCHAR)"HypervisorCrashdumpArea2")) )
{
*(&stru_140C452E0 + 8164) = 0;
if( KeRegisterBugCheckReasonCallback(
(PKBUGCHECK_REASON_CALLBACK_RECORD)((char *)&stru_140C452E0 + 8120),
HvlAddSecureSkPagesCallbackRoutine,
KbCallbackAddPages,
(PUCHAR)"SecureKernelCrashdumpArea2") )
{
*(&stru_140C452E0 + 996) = KeRegisterNmiCallback(HvlSkCrashdumpCallbackRoutine, 0i64);
return;
}
}
}
LABEL_16:
if( qword_140C47330 )
{
MmFreeIndependentPages(qword_140C47330, 0x1000ui64);
qword_140C47330 = 0i64;
}
}Referenced by:
HvlPhase1Initialize