IopAddMiniDumpPagesToPartialKernelDump
__int64 __fastcall IopAddMiniDumpPagesToPartialKernelDump(
unsigned int a1,
UINT64 a2,
_QWORD *a3,
INT64 a4,
INT64 a5,
INT64 a6,
INT64 a7,
UINT64 a8){
__int64 result;
__int64 v10;
__int64 v11;
_KTRAP_FRAME *v12;
UINT64 v13;
__int64 v14[2];
__int64(__fastcall *v15[5])(_QWORD, __int64, __int64);
__int64 v16;
v16 = 0i64;
v13 = 0i64;
LODWORD(a8) = 0;
if( !AvailablePagesForPartialDump )
return 3221225507i64;
v10 = *(_QWORD *)(CrashdmpDumpBlock + 8);
v11 = *(_QWORD *)(v10 + 48);
v15[1] = 0i64;
LODWORD(v16) = v16 | 3;
v14[0] = v11;
v14[1] = v10 + 56;
v15[2] = (__int64(__fastcall *)(_QWORD, __int64, __int64))v14;
v15[4] = (__int64(__fastcall *)(_QWORD, __int64, __int64))&AvailablePagesForPartialDump;
v15[0] = (__int64(__fastcall *)(_QWORD, __int64, __int64))IoSetDumpRangeForPartialKernelDump;
v15[3] = (__int64(__fastcall *)(_QWORD, __int64, __int64))v10;
IopUpdateMinidumpContext(a1, a2, (UINT64)a3, a4, a5, (_CONTEXT *)a6, (_KTHREAD *)a7, v12);
result = MmAddUnloadedDriverInformationToCrashDump(v15);
if( (int)result >= 0 )
{
result = IopMarkPagesForLoadedDriverInformation(v15);
if( (int)result >= 0 )
{
if( !IopCalculateStackInformation(a7, a6, &v13, &a8)
|| (result = IopMarkPagesForRunTimeTriageDataBlocks(v15, a6, v13, v13 + (unsigned int)a8), (int)result >= 0) )
{
result = IopMarkPagesForDpcData(v15);
if( (int)result >= 0 )
{
result = MmAddRangeToCrashDump(v15, *(_QWORD *)(a7 + 184), 2624i64);
if( (int)result >= 0 )
{
result = MmAddRangeToCrashDump(v15, a7, 2200i64);
if( (int)result >= 0 )
{
result = MmAddRangeToCrashDump(v15, v13, (unsigned int)a8);
if( (int)result >= 0 )
return IopAddTriageDumpDataToPartialKernelDump(v15, *(__int64 ***)(CrashdmpDumpBlock + 1416));
}
}
}
}
}
}
return result;
}Referenced by:
IoAddPagesForPartialKernelDump