MiGetSlabPage
NTSTATUS __stdcall MiGetSlabPage(INT64 a1, UINT64 a2, UINT64 a3, INT64 *a4, UINT64 a5){
INT64 v7;
INT64 v8;
__int64 v9;
NTSTATUS v10;
LODWORD(v7) = MiGetSlabAllocator(a1, (unsigned int)a3, a2);
v8 = v7;
if( (unsigned __int64)a4 - 1 <= 0xFFFFFFFFFFFFFFFDui64 )
*a4 = 0i64;
while( 1 )
{
LODWORD(v9) = MiGetPageFromSlabAllocator(v8);
v10 = v9;
if( v9 != -1 )
break;
if( *(_DWORD *)(v8 + 48) == 1 || MiSlabAllocatorRecentFailure(v8) )
return -1;
if( a4 != (INT64 *)-1i64 )
{
if( a4 )
*a4 = v8;
return v10;
}
if( !MiReplenishSlabAllocator(v8, a1, 1ui64, (unsigned int)a5) )
return -1;
}
return v10;
}Referenced by:
MiAllocateDriverPage
MiCompleteSecureProcessFault
MiFinalizeImageHeaderPage
MiGetHardFaultPages
MiPfPrepareReadList
MiPfPrepareSequentialReadList
MiPfPutPagesInTransition
MiResolveMappedFileFault
MiWalkEntireImage
MmAllocateIndependentPagesEx
MmAllocateNonChargedSecurePages
MmAllocateSecureKernelPages