MiReturnCrossPartitionCharges
VOID __fastcall MiReturnCrossPartitionCharges(_MI_CROSS_PARTITION_CHARGES *ChargeInfo, UINT64 NumberOfPages){
char v2;
__int64 v3;
_MI_CROSS_PARTITION_CHARGES *v4;
__int64 v6;
__int64 v7;
char v8;
_KEVENT *v9;
unsigned __int8 v10;
unsigned __int64 v11;
unsigned __int64 ChargeFailures;
int v13;
unsigned __int64 *p_ChargeFailures;
__int64 i;
v4 = ChargeInfo + 42;
v6 = (int)NumberOfPages;
v7 = v3;
v8 = v2;
v9 = 0i64;
v10 = ExAcquireSpinLockExclusive((INT64 *)&ChargeInfo[42]);
ChargeInfo[v6 + 59].ChargeFailures -= v7;
v11 = v10;
ChargeFailures = ChargeInfo[v6 + 59].ChargeFailures;
if( (v8 & 1) != 0 )
ChargeInfo[v6 + 60].ChargeFailures -= v7;
if( !ChargeFailures && (ChargeInfo->CurrentCharges & 0x100000000i64) != 0 )
{
v13 = 0;
p_ChargeFailures = &ChargeInfo[59].ChargeFailures;
for( i = 0i64; i < 7; ++i )
{
if( *p_ChargeFailures )
break;
++v13;
p_ChargeFailures += 4;
}
if( v13 == 7 )
v9 = (_KEVENT *)ChargeInfo[66].ChargeFailures;
}
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)v4);
__writecr8(v11);
if( v9 )
KeSetEvent(v9, 1, 0);
}Referenced by:
MiCreateLargePfnList
MiFreeLargePageCrossPartitionCharges
MiGetSubsectionCharges
MiReturnCrossPartitionCloneCharges
MiReturnCrossPartitionCombineCharges
MiReturnCrossPartitionSectionCharges