The MmGetSystemAddressForMdl routine is obsolete for Microsoft® Windows® 2000 and later, and for Windows Me. It is supported only for WDM drivers that must run on Windows 98. Otherwise use MmGetSystemAddressForMdlSafe.
MmGetSystemAddressForMdl is a macro that returns a nonpaged system-space virtual address for the buffer described by the MDL. It maps the physical pages described by a given MDL into system space, if they are not already mapped to system space.
PVOID
MmGetSystemAddressForMdl(
IN PMDL Mdl
);
MmGetSystemAddressForMdl returns the base system-space virtual address that maps the physical pages described by the given MDL.
Declared in wdm.h and ntddk.h. Include wdm.h or ntddk.h.
Drivers of PIO devices call this routine to translate a virtual address range, described by the MDL at Irp->MdlAddress, for a user buffer to a system-space address range.
A caller running at IRQL = DISPATCH_LEVEL must supply an MDL that describes nonpageable memory. In other words, the input MDL must describe an already locked-down user-space buffer returned by MmProbeAndLockPages, a locked-down buffer returned by MmBuildMdlForNonPagedPool, or system-space memory allocated from nonpaged pool, contiguous memory, or noncached memory.
The returned base address has the same offset as the virtual address in the MDL.
Callers of MmGetSystemAddressForMdl must be running at IRQL <= DISPATCH_LEVEL.
Windows 2000 issues a bug check if the attempt to map to system space fails. On Windows 98, this routine returns NULL in case of failure.
MmGetSystemAddressForMdlSafe, MmBuildMdlForNonPagedPool, MmProbeAndLockPages ›