MiFreePartitionPhysicalPages
VOID __fastcall MiFreePartitionPhysicalPages(_MI_PARTITION *FromPartition){
_MI_PARTITION *v1;
ULONG_PTR v2;
_MI_PARTITION *v3;
unsigned int v5;
ULONG_PTR *v6;
UINT64 v7;
v2 = *((_QWORD *)FromPartition + 866);
v3 = v1;
MiReturnPartitionPagesToParent(FromPartition);
v5 = 0;
if( KeNumberNodes )
{
v6 = (ULONG_PTR *)(*((_QWORD *)FromPartition + 2) + 4352i64);
do
{
if( *v6 )
KeBugCheckEx(0x1Au, 0x41008ui64, *v6, 0i64, 0i64);
v6 += 568;
++v5;
}
while( v5 < (unsigned __int16)KeNumberNodes );
}
if( *((_QWORD *)FromPartition + 512) )
KeBugCheckEx(0x1Au, 0x41006ui64, v2, *((_QWORD *)FromPartition + 866), *((_QWORD *)FromPartition + 888));
if( *((_QWORD *)FromPartition + 866) )
KeBugCheckEx(0x1Au, 0x41005ui64, v2, *((_QWORD *)FromPartition + 866), *((_QWORD *)FromPartition + 888));
if( *((_QWORD *)FromPartition + 888) )
KeBugCheckEx(0x1Au, 0x41004ui64, v2, *((_QWORD *)FromPartition + 888), 0i64);
if( *((_QWORD *)FromPartition + 896) != v2 || *((_QWORD *)FromPartition + 896) != *((_QWORD *)FromPartition + 949) )
KeBugCheckEx(0x1Au, 0x41003ui64, v2, *((_QWORD *)FromPartition + 896), *((_QWORD *)FromPartition + 949));
MiReturnResident((INT64)v3, *((_QWORD *)FromPartition + 896));
v7 = *((_QWORD *)FromPartition + 949);
if( v3 == (_MI_PARTITION *)&MiSystemPartition )
{
MiReturnCommit(v3, v7);
_InterlockedExchangeAdd64(&qword_140C4ECF8, -(__int64)v7);
}
else
{
MiIncreaseCommitLimits(v3, v7, v7, 0i64, 0i64);
}
}Referenced by:
MiDeletePartitionResources