MiAttemptPageFileReduction
VOID __stdcall MiAttemptPageFileReduction(_MMPAGE_FILE_EXPANSION *Request){
_MI_PARTITION *Partition;
__int64 v3;
unsigned __int8 v4;
unsigned __int64 v5;
__int64 *v6;
_MMPAGING_FILE **PagingFile;
__int64 v8;
_MMPAGING_FILE *v9;
__int64 FileInformation;
char v11[96];
__int64 v12[14];
FileInformation = 0i64;
memset(v11, 0i64, 0x58u);
memset(v12, 0i64, 0x68u);
HIDWORD(v12[0]) = 0;
Partition = Request->Partition;
v3 = 16i64;
v12[2] = (__int64)&v12[1];
v12[1] = (__int64)&v12[1];
BYTE2(v12[0]) = 6;
v12[3] = (__int64)Partition;
if( (Request->u1.Flags._bf_3 & 0x10) != 0 )
{
v4 = ExAcquireSpinLockExclusive((INT64 *)&Partition->Segments.SegmentListLock);
Request->RequestedExpansionSize = 0i64;
v5 = v4;
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)&Partition->Segments.SegmentListLock);
__writecr8(v5);
if( !MiOkToShrinkPageFiles(Partition->Vp.TotalCommittedPages, Partition->Vp.TotalCommitLimit) )
return;
LODWORD(v12[4]) = 16;
}
else
{
LODWORD(v12[4]) = Request->u1.Flags.PageFileNumber;
HIDWORD(v12[4]) = Request->ActualExpansion;
}
MiQueueSyncModifiedWriterApc((__int64)Partition, (INT64)v11, (INT64)MiAttemptPageFileReductionApc, (INT64)v12, v12);
v6 = &v12[5];
PagingFile = Partition->Vp.PagingFile;
do
{
v8 = *(unsigned int *)v6;
if( (_DWORD)v8 )
{
v9 = *PagingFile;
FileInformation = v8 << 12;
IoSetInformation(v9->File, FileAllocationInformation, 8ui64, &FileInformation);
}
++PagingFile;
v6 = (__int64 *)((char *)v6 + 4);
--v3;
}
while( v3 );
}Referenced by:
MiProcessDereferenceList