MiFlushAllFilesystemPages
NTSTATUS __stdcall MiFlushAllFilesystemPages(){
VOID(__stdcall *v0)(VOID *);
VOID(__stdcall *v1)(VOID *);
int v2;
unsigned int v3;
int v4;
LODWORD(v0) = KeGetCurrentIrql();
if( (unsigned __int8)v0 <= 1u )
{
LOBYTE(v0) = MiIsWorkingSetTrimThread();
v3 = 0;
if( !(_DWORD)v0 )
{
v0 = MiModifiedPageWriter;
if( v1 != MiModifiedPageWriter )
{
v0 = MiMappedPageWriter;
if( v1 != MiMappedPageWriter )
{
if( v2 == 1 )
{
LODWORD(v0) = _InterlockedIncrement((_DWORD *)&stru_140C4DB30 + 566);
if( (_DWORD)v0 != 1 )
return(int)v0;
MiEmptyAllWorkingSets(&Irp);
}
_InterlockedIncrement((_DWORD *)&stru_140C50B28 + 171);
LODWORD(v0) = *(&stru_140C50B28 + 1874);
if( *(&stru_140C50B28 + 923) != *(&stru_140C50B28 + 937) )
{
v4 = *(&stru_140C50B28 + 145);
do
{
KeSetEvent((PRKEVENT)((char *)&stru_140C50B28 + 688), 0, 0);
CcForEachPartition((__int64(__fastcall *)(INT64, __int64))CcNotifyWriteBehindHelper, 2i64, 0);
LODWORD(v0) = *(&stru_140C50B28 + 1874);
if( *(&stru_140C50B28 + 923) == *(&stru_140C50B28 + 937) )
break;
KeDelayExecutionThread(0, 0, (_LARGE_INTEGER *)&Mi30Milliseconds);
LODWORD(v0) = *(&stru_140C50B28 + 145);
if( v4 != *(&stru_140C50B28 + 145) )
{
v4 = *(&stru_140C50B28 + 145);
v3 = -1;
}
++v3;
}
while( v3 < 0xFF );
}
_InterlockedDecrement((_DWORD *)&stru_140C50B28 + 171);
}
}
}
}
return(int)v0;
}Referenced by:
MiCommitExistingVad
MiGetNextPageTablePte
MiInPageSingleKernelStack
MiLockPagedAddress
MiMakeOutswappedPageResident
MiMakeSystemAddressValid
MiSetProtectionOnSection
MiShutdownSystem
MiWaitForInPageComplete