1.4.4 Address Mappings and MDLs
-
HalTranslateBusAddress
-
Returns the corresponding physical address in system memory for a given
bus-relative logical address.
-
MmGetPhysicalAddress
-
Returns the corresponding physical address for a given valid virtual address.
-
MmGetMdlVirtualAddress
-
Returns a (possibly invalid) virtual address for a buffer described by a given
MDL; the returned address, used as an index to a physical address entry in the
MDL, can be input to IoMapTransfer for drivers that use DMA.
-
MmGetSystemAddressForMdl
-
Returns a system-space virtual address that maps the physical pages described
by a given MDL for drivers whose devices must use PIO.
-
MmBuildMdlForNonPagedPool
-
Fills in the corresponding physical addresses of a given MDL that specifies a
range of virtual addresses in nonpaged pool.
-
MmGetMdlByteCount
-
Returns the length in bytes of the buffer mapped by a given MDL.
-
MmGetMdlByteOffset
-
Returns the byte offset within a page of the buffer described by a given MDL.
-
MmMapLockedPages
-
Maps already locked physical pages, described by a given MDL, to a returned
virtual address range.
-
MmUnmapLockedPages
-
Releases a mapping set up by MmMapLockedPages.
-
MmIsAddressValid
-
Returns whether a page fault will occur if a read or write is done at the
given virtual address.
-
MmSizeOfMdl
-
Returns the number of bytes required for an MDL describing the buffer
specified by the given virtual address and length in bytes.
-
MmCreateMdl
-
Allocates and initializes an MDL describing a buffer specified by the given
virtual address and length in bytes; returns a pointer to the MDL.
-
MmPrepareMdlForReuse
-
Reinitializes a caller-created MDL for reuse.
-
MmInitializeMdl
-
Initializes a caller-created MDL to describe a buffer specified by the given
virtual address and length in bytes.
-
MmMapIoSpace
-
Maps a physical address range to a cached or noncached virtual address range
in nonpaged system space.
-
MmUnmapIoSpace
-
Unmaps a virtual address range from a physical address range.
-
MmProbeAndLockPages
-
Probes the pages specified in an MDL for a particular kind of access, makes
the pages resident, and locks them in memory; returns the MDL updated with
corresponding physical addresses. (Usually, only highest-level drivers call
this routine.)
-
MmUnlockPages
-
Unlocks the previously probed and locked pages specified in an MDL.
-
IoAllocateMdl
-
Allocates an MDL large enough to map the starting address and length supplied
by the caller; optionally associates the MDL with a given IRP.
-
IoBuildPartialMdl
-
Builds an MDL for the specified starting virtual address and length in bytes
from a given source MDL. Drivers that split large transfer requests into a
number of smaller transfers can call this routine.
-
IoFreeMdl
-
Releases a given MDL allocated by the caller.