MiIncreaseCommitLimits
UINT64 __stdcall MiIncreaseCommitLimits(
_MI_PARTITION *Partition,
UINT64 InitialIncrement,
UINT64 MaximumIncrement,
UINT64 ConsumeInitialIncrement,
PVOID NewPageFile){
int v7;
unsigned int v8;
__int64 v10;
UINT64 v12;
struct _KLOCK_QUEUE_HANDLE LockHandle;
memset(&LockHandle, 0, sizeof(LockHandle));
v7 = ConsumeInitialIncrement;
v8 = 1;
KeAcquireInStackQueuedSpinLock((UINT64 *)Partition + 781, &LockHandle);
if( *((_QWORD *)Partition + 777) + MaximumIncrement < *((_QWORD *)Partition + 777) )
{
v8 = 0;
}
else
{
if( InitialIncrement )
{
if( v7 )
{
_InterlockedExchangeAdd64((volatile signed __int64 *)Partition + 933, InitialIncrement);
}
else if( *((_QWORD *)Partition + 783) )
{
v12 = MiRestockOverCommit((INT64)Partition, InitialIncrement);
if( InitialIncrement != v12 )
_InterlockedExchangeAdd64((volatile signed __int64 *)Partition + 933, InitialIncrement - v12);
}
*((_QWORD *)Partition + 949) += InitialIncrement;
}
if( MaximumIncrement )
*((_QWORD *)Partition + 777) += MaximumIncrement;
MiComputeCommitThresholds(Partition);
if( NewPageFile )
{
MiUpdatePageFileList((__int64)NewPageFile, 1);
_InterlockedExchangeAdd64((volatile signed __int64 *)Partition + 933, 2ui64);
v10 = *((unsigned int *)Partition + 1734);
*((_QWORD *)Partition + v10 + 868) = NewPageFile;
*((_DWORD *)Partition + 1734) = v10 + 1;
}
}
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
return v8;
}Referenced by:
MiCreatePagingFile
MiExtendPagingFiles
MiFreePartitionPhysicalPages
MiInitializeCommitment
MiInsertPageFileInList
MiInsertPartitionPages
MiMapNewPfns