MiArePageContentsZero
NTSTATUS __stdcall MiArePageContentsZero(PVOID BugCheckParameter2){
unsigned __int64 v1;
unsigned __int64 v2;
char *v3;
char *v4;
unsigned __int8 CurrentIrql;
int v6;
void *v7;
void *v8;
__int64 v9;
NTSTATUS result;
v2 = v1;
v3 = (char *)BugCheckParameter2;
v4 = (char *)MmGetPfnDb() + 48 * (_QWORD)BugCheckParameter2;
LABEL_2:
CurrentIrql = KeGetCurrentIrql();
__writecr8(2ui64);
if( *((_QWORD *)KeGetCurrentPrcb() + 4160) )
{
v6 = (unsigned __int8)v4[34] >> 6;
if( v6 == 3 )
{
v2 = 0i64;
}
else if( v6 != 1 && v2 > 0x10 )
{
v2 = 16i64;
}
while( v2 )
{
if( (v4[35] & 0x40) == 0 && !MiIsPageOnBadList((INT64)v4) )
{
LODWORD(v7) = MiMapPageInHyperSpaceWorker((UINT64)v3, 0i64, 0x20000000ui64);
v8 = v7;
KeCheckForZeroPage();
if( v9 )
MiPageNotZero(v8, (UINT64)v3);
MiUnmapPageInHyperSpaceWorker(v8, 0x11u, 0i64);
}
v4 += 48;
++v3;
if( (--v2 & 0x3F) == 0 && CurrentIrql < 2u && KeShouldYieldProcessor() )
{
__writecr8(CurrentIrql);
goto LABEL_2;
}
}
}
result = CurrentIrql;
__writecr8(CurrentIrql);
return result;
}Referenced by:
MiConvertEntireLargePageToSmall
MiCreateSharedZeroPages
MiCreateSystemPageTable
MiGetLargePage
MiGetPage
MiIdealClusterPage
MiInsertLargePageInNodeList
MiInsertPageInFreeOrZeroedList
MiLargePageFreeToZero
MiReplenishPageSlist
MiSlistGetFreePage
MiUnlinkFreeOrZeroedPage
MiUnlinkNodeLargePageHelper