MmAreMdlPagesLocked
UINT64 __stdcall MmAreMdlPagesLocked(_MDL *MemoryDescriptorList){
UINT64 *v1;
unsigned __int64 v2;
UINT64 v3;
_MMPFN *v4;
UINT8 v5;
BOOL IsPfnLocked;
v1 = (UINT64 *)&MemoryDescriptorList[1];
v2 = (((LODWORD(MemoryDescriptorList->StartVa) + MemoryDescriptorList->ByteOffset) & 0xFFF)
+ (unsigned __int64)MemoryDescriptorList->ByteCount
+ 4095) >> 12;
while( 1 )
{
v3 = *v1;
if( (unsigned int)MiIsPfn(*v1) )
{
v4 = (_MMPFN *)((char *)MmGetPfnDb() + 48 * v3);
v5 = dword_140C4E40C == 2 ? 17 : MiLockPage((INT64)v4);
IsPfnLocked = MiIsPfnLocked((INT64)v4);
if( v5 != 17 )
MiUnlockPage(v4, v5);
if( !IsPfnLocked )
break;
}
++v1;
if( !--v2 )
return 1i64;
}
return 0i64;
}Referenced by:
VERIFY_BUFFER_LOCKED
VerifierMmBuildMdlForNonPagedPool