PMDL
MmCreateMdl(
IN PMDL MemoryDescriptorList, /* optional */
IN PVOID Base,
IN ULONG Length
);
MmCreateMdl allocates and initializes an MDL.
MmCreateMdl returns a pointer to the initialized MDL.
The caller must be running at IRQL < DISPATCH_LEVEL, if the caller passes a NULL pointer for MemoryDescriptorList and expects MmCreateMdl to allocate the storage.
If the call to MmCreateMdl occurs while running at IRQL >= DISPATCH_LEVEL, the caller must allocate memory for the MDL from nonpaged pool and must supply a nonNULL pointer for MemoryDescriptorList.