MmRemoveSystemCacheFromDump
VOID __stdcall MmRemoveSystemCacheFromDump(_MM_KERNEL_DUMP_CONTEXT *Context){
VOID *v2;
_MMSUPPORT_INSTANCE *AnyMultiplexedVm;
_MMSUPPORT_INSTANCE *v4;
char v5;
UINT64 v6;
_MMSUPPORT_SHARED *v7;
_MMSUPPORT_SHARED *SharedVm;
INT64 v9[22];
memset(v9, 0i64, sizeof(v9));
v9[5] = -1i64;
v9[19] = (INT64)MiCrashdumpRemovePte;
v9[21] = (INT64)Context;
AnyMultiplexedVm = MiGetAnyMultiplexedVm(MiWorkingSetTypeSystemCache, v2);
v4 = AnyMultiplexedVm;
v9[3] = (INT64)AnyMultiplexedVm;
if( (KiBugCheckActive & 3) != 0 || (struct _KTHREAD *)*(&stru_140C4DB30 + 291) == KeGetCurrentThread() )
{
BYTE6(v9[0]) = 17;
SharedVm = MiGetSharedVm(AnyMultiplexedVm);
if( !(unsigned int)ExTryAcquireSpinLockExclusiveAtDpcLevel((INT64 *)&SharedVm->WorkingSetLock) )
KeBugCheckEx(0x1Au, (PVOID)0x50000, Context, 0i64, 0i64);
}
else
{
LOWORD(v9[0]) = 6;
MiLockWorkingSetShared();
BYTE6(v9[0]) = v5;
}
MiWalkPageTables((INT64)v9);
LOBYTE(v6) = BYTE6(v9[0]);
if( BYTE6(v9[0]) == 17 )
{
MiCheckProcessShadow();
v7 = MiGetSharedVm(v4);
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&v7->WorkingSetLock);
}
else
{
MiUnlockWorkingSetShared(v4, v6);
}
}Referenced by:
IopLiveDumpRemoveSystemCacheFromDump
MmGetDumpRange