MmCreateMdl
MDL *__stdcall MmCreateMdl(MDL *MemoryDescriptorList, PVOID Base, UINT64 a3){
MDL *v5;
__int16 v6;
MDL *v7;
MDL *result;
v5 = MemoryDescriptorList;
if( a3 >= 0x100000000i64 )
return 0i64;
v6 = (__int16)Base;
if( !MemoryDescriptorList )
{
LODWORD(v7) = MiAllocatePool((struct _SLIST_ENTRY *)0x40);
v5 = v7;
if( !v7 )
return 0i64;
}
v5->Next = 0i64;
v5->MdlFlags = 0;
v5->ByteCount = a3;
v5->StartVa = (void *)((unsigned __int64)Base & 0xFFFFFFFFFFFFF000ui64);
result = v5;
v5->Size = 8 * ((((v6 & 0xFFF) + a3 + 4095) >> 12) + 6);
v5->ByteOffset = v6 & 0xFFF;
return result;
}Referenced by:
MiLockRetpolineStubs
MiPfAllocateMdls
SmKmStoreFileWriteHeader