MiDeleteImageCreationMdls
NTSTATUS __stdcall MiDeleteImageCreationMdls(PMDL MemoryDescriptorList){
NTSTATUS result;
int v2;
int v3;
PMDL v4;
__int16 MdlFlags;
struct _MDL *Next;
struct _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((_MMPFN *)((char *)MmGetPfnDb() + 48 * (__int64)v7->Next));
v7 = (struct _MDL *)((char *)v7 + 8);
}
}
}
IoFreeMdl(v4);
v4 = Next;
}
while( Next );
}
return result;
}Referenced by:
MiCreateImageFileMap
MiCreateMdl