MiCanFlushMakeProgress
NTSTATUS __stdcall MiCanFlushMakeProgress(_MI_PARTITION *Partition, UINT64 PagefileOnly){
volatile unsigned int NumberOfPagingFiles;
int v3;
__int64 i;
__int64 v5;
__int16 v6;
if( !(_DWORD)PagefileOnly && Partition->Vp.ModifiedPageListHead.Total != Partition->Vp.TotalPagesForPagingFile )
return 1;
NumberOfPagingFiles = Partition->Vp.NumberOfPagingFiles;
if( NumberOfPagingFiles )
{
v3 = 0;
for( i = 6944i64; ; i += 8i64 )
{
v5 = *(_QWORD *)((char *)&Partition->Core.PartitionId + i);
if( *(_QWORD *)(v5 + 24) )
{
v6 = *(_WORD *)(v5 + 204);
if( (v6 & 0x40) == 0 )
{
if( (v6 & 0x10) == 0 )
break;
Partition = *(_MI_PARTITION **)(v5 + 248);
if( Partition->PageLists.ModifiedPageListByReservation[v6 & 0xF].Total )
break;
}
}
if( ++v3 >= NumberOfPagingFiles )
return 0;
}
return 1;
}
return 0;
}Referenced by:
MiFlushAllHintedStorePages
MiFlushAllPagesWorker