PspReturnResourceQuota
VOID __fastcall PspReturnResourceQuota(
_PS_RESOURCE_TYPE ResourceType,
_PSP_QUOTA_ENTRY *QuotaEntry,
UINT64 ReturnQuota,
UINT64 RemoveEntry){
int v6;
int *v7;
__int64 v9;
_PSP_QUOTA_ENTRY **v10;
UINT8 OldIrql;
OldIrql = 0;
v6 = RemoveEntry;
v7 = &PspQuotaExpansionDescriptors[14 * ResourceType];
PspLockQuotaExpansion(v7, &OldIrql);
if( ReturnQuota )
(*((void(__fastcall **)(_QWORD, UINT64))v7 + 4))((unsigned int)ResourceType, ReturnQuota);
if( v6 )
{
v9 = *(_QWORD *)&QuotaEntry->ExpansionLink[8];
if( *(_PSP_QUOTA_ENTRY **)(v9 + 8) != (_PSP_QUOTA_ENTRY *)&QuotaEntry->ExpansionLink[8]
|| (v10 = *(_PSP_QUOTA_ENTRY ***)&QuotaEntry->ExpansionLink[16],
*v10 != (_PSP_QUOTA_ENTRY *)&QuotaEntry->ExpansionLink[8]) )
{
__fastfail(3u);
}
*v10 = (_PSP_QUOTA_ENTRY *)v9;
*(_QWORD *)(v9 + 8) = v10;
}
PspUnlockQuotaExpansion(v7, OldIrql);
}Referenced by:
ObpFreeObject
PspDereferenceQuotaBlock
PspReturnQuota