MiReferencePageForModifiedWrite
_MI_RESAVAIL_CHARGE __stdcall MiReferencePageForModifiedWrite(PVOID Pfn1, UINT64 Flags){
char v3;
_MI_PARTITION *v4;
_MI_RESAVAIL_CHARGE v5;
char v6;
char v7;
_MI_RESAVAIL_CHARGE result;
UINT64 v9;
v3 = Flags;
v4 = *(_MI_PARTITION **)(*(&stru_140C4DB30 + 267) + 8 * ((*((_QWORD *)Pfn1 + 5) >> 39) & 0x3FFi64));
if( (Flags & 1) != 0 )
{
v5 = MiChargedLocal;
LABEL_3:
if( (v3 & 4) == 0 )
{
MiUnlinkPageFromList((_MMPFN *)Pfn1, 0i64);
*((_QWORD *)Pfn1 + 3) &= 0xC000000000000000ui64;
}
v6 = *((_BYTE *)Pfn1 + 34);
++*((_WORD *)Pfn1 + 16);
v7 = v6 | 8;
*((_BYTE *)Pfn1 + 34) = v7;
if( (v3 & 8) == 0 )
*((_BYTE *)Pfn1 + 34) = v7 & 0xEF;
if( (*((_DWORD *)Pfn1 + 4) & 0x400i64) == 0 && (MiGetPagePrivilege((ULONG_PTR)Pfn1, 1ui64, 0i64) & 0x10) != 0 )
MiClearPfnImageVerified(Pfn1, 0x1Cui64);
return v5;
}
v9 = (*((_DWORD *)Pfn1 + 4) >> 10) & 1 | 2u;
if( (v3 & 2) == 0 )
v9 = (*((_DWORD *)Pfn1 + 4) >> 10) & 1;
result = MiChargeForWriteInProgressPage(v4, v9);
v5 = result;
if( result )
goto LABEL_3;
return result;
}Referenced by:
MiAddToReservationCluster
MiBuildMappedCluster
MiBuildReservationCluster
MiFillNoReservationCluster
MiGatherMappedPages
MiGetPageForWriteCluster
MmStoreProbeAndLockPages