MiRetardMdl
UINT64 __stdcall MiRetardMdl(_MDL *Mdl){
_MDL *v1;
_MDL *v3;
int v4;
__int64 Next;
__int16 *i;
__int16 MdlFlags;
unsigned int v8;
UINT64 result;
v1 = Mdl + 1;
v3 = (_MDL *)((char *)Mdl
+ 8
* ((Mdl->ByteCount + 4095i64 + (unsigned __int64)((LODWORD(Mdl->StartVa) + Mdl->ByteOffset) & 0xFFF)) >> 12)
+ 48);
v4 = 0;
do
{
Next = (__int64)v3->Next;
for( i = &v3->Size; v3 != v1; v3 = (_MDL *)((char *)v3 - 8) )
v3->Next = *(_MDL **)&v3[-1].ByteCount;
v1 = (_MDL *)((char *)v1 + 8);
++v4;
v3->Next = (_MDL *)(Next & 0x7FFFFFFFFFFFFFFFi64);
v3 = (_MDL *)i;
}
while( Next >= 0 );
MdlFlags = Mdl->MdlFlags;
v8 = v4 << 12;
Mdl->ByteCount += v8;
Mdl->StartVa = (char *)Mdl->StartVa - v8;
if( (MdlFlags & 1) != 0 )
Mdl->MappedSystemVa = (char *)Mdl->MappedSystemVa - v8;
result = v8;
Mdl->MdlFlags = MdlFlags & 0xFDFF;
return result;
}Referenced by:
MiFlushComplete
MiFreePagesFromMdl
MiPfCompleteCoalescedIo
MiUnlockFlushMdl
MiWaitForInPageComplete
MiWriteComplete
MiZeroPageWrite
MmUnlockPages
MmUnmapLockedPages
MmUnmapReservedMapping