MiStoreMarkLockedPagesModified
VOID __stdcall MiStoreMarkLockedPagesModified(_MDL *MemoryDescriptorList){
_MDL *v1;
_MDL *v2;
_MMPFN *v3;
unsigned __int64 v4;
_MMPTE v5;
char v6;
_MI_PARTITION *v7;
v1 = MemoryDescriptorList + 1;
v2 = (_MDL *)((char *)MemoryDescriptorList
+ 8
* ((MemoryDescriptorList->ByteCount
+ 4095i64
+ (unsigned __int64)((LODWORD(MemoryDescriptorList->StartVa) + MemoryDescriptorList->ByteOffset) & 0xFFF)) >> 12)
+ 48);
while( v1 < v2 )
{
v3 = &MmGetPfnDb()[(__int64)v1->Next];
v4 = MiLockPageInline(v3);
v5.u.Long = MiCapturePageFileInfoInline(&v3->OriginalPte, 1ui64, 0i64).u.Long;
v6 = *((_BYTE *)&v3->u3 + 2);
if( (v6 & 0x10) == 0 )
*((_BYTE *)&v3->u3 + 2) = v6 | 0x10;
v7 = *(_MI_PARTITION **)(*(&stru_140C4DB30 + 267) + 8 * (((unsigned __int64)v3->u4._bf_0 >> 39) & 0x3FF));
_InterlockedAnd64(&v3->u2.Lock, 0x7FFFFFFFFFFFFFFFui64);
__writecr8(v4);
if( v5.u.Long )
MiReleasePageFileInfo(v7, v5, 0i64);
v1 = (_MDL *)((char *)v1 + 8);
}
}Referenced by:
MmStoreProbeAndLockPages