MiPageListCollision
VOID __stdcall MiPageListCollision(_MMPFN *Pfn1){
union {unsigned __int64 Long;volatile unsigned __int64 VolatileLong;_MMPTE_HARDWARE Hard;_MMPTE_PROTOTYPE Proto;_MMPTE_SOFTWARE Soft;_MMPTE_TIMESTAMP TimeStamp;_MMPTE_TRANSITION Trans;_MMPTE_SUBSECTION Subsect;_MMPTE_LIST List;} v1;
__int64 v2;
int v3;
__int64 v4;
__int64 v5;
_MMPTE *v6;
v1.Long = (unsigned __int64)Pfn1->OriginalPte.u;
*((_BYTE *)&Pfn1->u3 + 2) &= ~8u;
*(_QWORD *)(v1.Long + 24) = 0i64;
*(_BYTE *)(v1.Long + 69) = 1;
v2 = MiSwizzleInvalidPte(128i64);
*(_QWORD *)(v5 + 16) = v2;
v6 = *(_MMPTE **)(v4 + 32);
if( v6 )
{
if( (v6->u.Long & 1) != 0 )
MiZeroPageWorkMapping(*(unsigned int *)(v4 + 64), v6, v3 == 0 ? 2 : 0, (_KTBFLUSH_TYPE)-v3);
}
}Referenced by:
MiReplenishPageSlist
MiScrubNodeLargePageList
MiUnlinkFreeOrZeroedPage
MiUnlinkNodeLargePageHelper