MiChargeFullProcessCommitment
NTSTATUS __stdcall MiChargeFullProcessCommitment(ULONG_PTR TargetProcess, UINT64 QuotaCharge){
char v2;
_EPROCESS *v4;
_EPROCESS *v5;
int v6;
_MI_PARTITION *ProcessPartition;
NTSTATUS v9;
_COMMIT_FAIL_LOCATION v10;
v2 = 0;
v4 = *(_EPROCESS **)&TargetProcess;
if( *(PEPROCESS *)&TargetProcess == PsInitialSystemProcess
|| PspChargeQuota(
*(_EPROCESS_QUOTA_BLOCK **)(*(_QWORD *)&TargetProcess + 1384i64),
*(_EPROCESS **)&TargetProcess,
PsResourcePageFile,
QuotaCharge) >= 0 )
{
v2 = 1;
MiChargeProcessCommitment(v4, QuotaCharge);
if( v6 )
{
v2 = 3;
if( (v4->Flags2 & 0x10) == 0 )
{
LABEL_7:
ProcessPartition = MiGetProcessPartition(v4, v5);
if( MiChargeCommit(ProcessPartition, QuotaCharge, 0i64) )
return 0;
v10 = 4;
goto LABEL_13;
}
if( PspChangeJobMemoryUsageByProcess(2ui64, QuotaCharge, v4, 0i64) )
{
v2 = 7;
goto LABEL_7;
}
v10 = 3;
}
else
{
v10 = 2;
}
LABEL_13:
v9 = -1073741523;
goto LABEL_14;
}
v9 = -1073741524;
v10 = 1;
LABEL_14:
if( (v2 & 1) != 0 )
PsReturnProcessPageFileQuota(v4, QuotaCharge);
if( (v2 & 2) != 0 )
MiReturnProcessCommitment(v4, QuotaCharge);
if( (unsigned __int8)v2 >= 4u )
PspChangeJobMemoryUsageByProcess(2ui64, -(__int64)QuotaCharge, v4, 0i64);
MiCommitRequestFailed(v4, (INT64)v5, QuotaCharge, v10);
return v9;
}Referenced by:
MiCommitExistingVad
MiCommitHotPatchTable
MiCommitPageTablesForVad
MiComputeProcessUserVa
MiCopyToUserVa
MiCreateLargePageVad
MiMakeHyperRangeAccessible
MiPrepareImagePagesForHotPatch
MiProbeAndLockPrepare
MiSetProtectionOnSection
MiSplitPrivatePage
MiSplitReducedCommitClonePage