MiMakePageBad
VOID __fastcall MiMakePageBad(UINT64 a1, CHAR a2){
int v4;
unsigned __int8 v5;
v4 = a2 & 1;
if( (a2 & 1) != 0 )
v5 = MiLockPageInline(a1);
else
v5 = 17;
if( !MiIsPageOnBadList(a1) )
{
if( (*(_BYTE *)(a1 + 35) & 0x40) == 0 )
{
MiAcquireNonPagedResources(
*(_MI_PARTITION **)(qword_140C4E388 + 8 * ((*(_QWORD *)(a1 + 40) >> 39) & 0x3FFi64)),
1ui64);
MiSetPfnRemovalRequested(a1, 1i64);
}
if( (a2 & 2) != 0 )
MiInsertPageInList((_MMPFN *)a1, 0x20ui64);
if( v4 )
{
_InterlockedAnd64((volatile signed __int64 *)(a1 + 24), 0x7FFFFFFFFFFFFFFFui64);
__writecr8(v5);
}
_InterlockedIncrement(&dword_140C4E51C);
}
}Referenced by:
MiScrubLargeMappedPage
MiScrubNode
MiScrubProcessPhysicalPages