MiDeleteNonPagedPoolTail
NTSTATUS __stdcall MiDeleteNonPagedPoolTail(INT64 a1){
__int64 v1;
volatile signed __int32 *v3;
UINT64 SpinCount;
v1 = *(_QWORD *)(a1 + 168);
MiFlushTbList((_MI_TB_FLUSH_LIST *)v1);
if( *(_DWORD *)(v1 + 208) )
{
v3 = (volatile signed __int32 *)&MmGetPfnDb()[*(_QWORD *)(v1 + 216)];
LODWORD(SpinCount) = 0;
while( _interlockedbittestandset64(v3 + 6, 0x3Fui64) )
{
do
KeYieldProcessorEx(&SpinCount);
while( *((__int64 *)v3 + 3) < 0 );
}
MiReduceShareCount((PVOID)v3, *(unsigned int *)(v1 + 208));
_InterlockedAnd64((volatile signed __int64 *)v3 + 3, 0x7FFFFFFFFFFFFFFFui64);
*(_DWORD *)(v1 + 208) = 0;
}
return 0;
}Referenced by:
MiClearNonPagedPtes