MmCheckMdlPages
VOID __fastcall MmCheckMdlPages(_MDL *MemoryDescriptorList){
UINT64 *v1;
__int16 v2;
unsigned __int64 v3;
UINT64 *v5;
UINT64 Param4;
int IsPfn;
UINT64 v8;
v1 = (UINT64 *)&MemoryDescriptorList[1];
v2 = MemoryDescriptorList->MdlFlags & 0x800;
v3 = (((LODWORD(MemoryDescriptorList->StartVa) + MemoryDescriptorList->ByteOffset) & 0xFFF)
+ (unsigned __int64)MemoryDescriptorList->ByteCount
+ 4095) >> 12;
v5 = (UINT64 *)(&MemoryDescriptorList[1].Next + v3);
do
{
Param4 = *v1;
IsPfn = MiIsPfn(*v1);
if( v2 )
{
if( IsPfn != 1 )
goto LABEL_8;
}
else if( !IsPfn )
{
VerifierBugCheckIfAppropriate(0xC4ui64, 0x89ui64, (UINT64)MemoryDescriptorList, (UINT64)v1, Param4, v8);
Param4 = *v1;
}
if( !*((_WORD *)MmGetPfnDb() + 24 * Param4 + 16) )
VerifierBugCheckIfAppropriate(
0xC4ui64,
0x85ui64,
(UINT64)MemoryDescriptorList,
v3,
(__int64)(48 * Param4) / 48,
v8);
LABEL_8:
++v1;
}
while( v1 < v5 );
}Referenced by:
ViMmMapLockedPagesSanityChecks