MmAddRangeToCrashDump
NTSTATUS __stdcall MmAddRangeToCrashDump(_MM_KERNEL_DUMP_CONTEXT *Context, VOID *Va, UINT64 NumberOfBytes){
__int64 v6;
int v7;
_MI_VA_RANGE v8;
_MMPTE *v9;
_MMPTE *PteBase;
_MI_VA_RANGE *v11;
__int64 v12;
UINT64 PagingLevel;
_MI_VA_RANGE VaHierarchy[24];
memset(VaHierarchy, 0i64, 0x58u);
v6 = 1i64;
if( (KeGetCurrentThread()->ApcState.Process->Flags3 & 0x1000) != 0 )
{
LOBYTE(v7) = MiIsWorkingSetTrimThread();
v8 = VaHierarchy[20];
if( !v7 )
v8 = v6;
VaHierarchy[20] = v8;
}
*(_QWORD *)&VaHierarchy[16] = Va;
v9 = (_MMPTE *)((char *)Va + NumberOfBytes - 1);
PteBase = MmGetPteBase();
*(_QWORD *)&VaHierarchy[18] = v9;
v11 = &VaHierarchy[2];
v12 = 4i64;
do
{
Va = (char *)PteBase + (((unsigned __int64)Va >> 9) & 0x7FFFFFFFF8i64);
v9 = (_MMPTE *)((char *)PteBase + (((unsigned __int64)v9 >> 9) & 0x7FFFFFFFF8i64));
*((_QWORD *)v11 - 1) = Va;
*(_QWORD *)v11 = v9;
v11 += 4;
v12 -= v6;
}
while( v12 );
LODWORD(PagingLevel) = 3;
return MiAddRangeToCrashDump(Context, (_MMPTE *)Va, v9, VaHierarchy, PagingLevel);
}Referenced by:
ExAddPrivateDataToCrashDump
IopAddLiveDumpPagesToPartialKernelDump
IopAddMiniDumpPagesToPartialKernelDump
IopAddTriageDumpDataToPartialKernelDump
IopLiveDumpAddTriageDumpData
IopLiveDumpMarkDeviceNode
IopLiveDumpMarkImportantDumpData
IopLiveDumpMarkLoadedModuleList
IopLiveDumpMarkProcessorData
IopLiveDumpMarkRequiredDumpData
IopMarkPagesForDeviceNode
IopMarkPagesForDpcData
IopMarkPagesForLoadedDriverInformation
IopMarkPagesForProcessorData
IopMarkPagesForRunTimeTriageDataBlocks
MiAddPartitionDataToCrashDump
MiAddUnicodeStringToCrashDump
MmAddPrivateDataToCrashDump
MmAddUnloadedDriverInformationToCrashDump
MmGetDumpRange