MiDeleteImageCreationMdls
NTSTATUS __stdcall MiDeleteImageCreationMdls(PMDL MemoryDescriptorList){
NTSTATUS result;
int v2;
int v3;
PMDL v4;
__int16 MdlFlags;
_MDL *Next;
_MDL *v7;
unsigned __int64 v8;
unsigned __int64 i;
if( MemoryDescriptorList )
{
v3 = v2;
v4 = MemoryDescriptorList;
do
{
MdlFlags = v4->MdlFlags;
Next = v4->Next;
if( (MdlFlags & 4) != 0 )
{
ExFreePoolWithTag(v4->StartVa, 0);
}
else if( (MdlFlags & 2) != 0 )
{
if( (MdlFlags & 1) != 0 )
MmUnmapLockedPages(v4->MappedSystemVa, v4);
if( v3 )
{
v7 = v4 + 1;
v8 = (unsigned __int64)v4->ByteCount >> 12;
for( i = 0i64; i < v8; ++i )
{
if( v7->Next != (_MDL *)-1i64 )
MiReturnPfnReferenceCount(&MmGetPfnDb()[(__int64)v7->Next]);
v7 = (_MDL *)((char *)v7 + 8);
}
}
}
result = (unsigned int)IoFreeMdl(v4);
v4 = Next;
}
while( Next );
}
return result;
}Referenced by:
MiCreateImageFileMap
MiCreateMdl