MiReclaimUnusedUltraMdlMaps
NTSTATUS __stdcall MiReclaimUnusedUltraMdlMaps(){
NTSTATUS result;
int v1;
unsigned int v2;
unsigned int v3;
unsigned __int64 v4;
PSLIST_ENTRY v5;
PSLIST_ENTRY v6;
_KLOCK_QUEUE_HANDLE LockHandle;
result = 0;
memset(&LockHandle, 0, sizeof(LockHandle));
v1 = 0;
v2 = 0;
if( KeNumberNodes )
{
do
{
v3 = 0;
v4 = (unsigned __int64)v2 << 9;
do
{
while( *(_WORD *)(v4 + *(&stru_140C4DB30 + 457)) > 2u )
{
v5 = RtlpInterlockedPopEntrySList((PSLIST_HEADER)(*(&stru_140C4DB30 + 457) + ((8i64 * v2 + v3) << 6)));
v6 = v5;
if( !v5 )
break;
++v1;
MiDeleteUltraMapContext((INT64)(&v5->Next + 1), (_XSTATE_CONFIGURATION *)3);
ExFreePoolWithTag(v6, 0);
}
++v3;
v4 += 64i64;
}
while( v3 < 8 );
result = (unsigned __int16)KeNumberNodes;
++v2;
}
while( v2 < (unsigned __int16)KeNumberNodes );
if( v1 )
{
KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)&stru_140C4DB30 + 448, &LockHandle);
*(&stru_140C4DB30 + 912) -= v1;
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
result = KiIrqlFlags;
__writecr8(LockHandle.OldIrql);
}
}
return result;
}Referenced by:
MiWorkingSetManager