PVOID
MmMapIoSpace(
IN PHYSICAL_ADDRESS PhysicalAddress,
IN ULONG NumberOfBytes,
IN BOOLEAN CacheEnable
);
MmMapIoSpace maps the given physical address range to nonpaged system space.
Parameters
PhysicalAddress
Specifies the starting physical address of the I/O range to be mapped.
NumberOfBytes
Specifies the number of bytes to be mapped.
CacheEnable
Indicates whether the physical address range can be mapped as cached memory. For device registers, this value usually is FALSE.
Return Value
MmMapIoSpace returns the base virtual address that maps the base physical address for the range. If space for mapping the range is insufficient, it returns NULL.
Comments
Device drivers call this routine during initialization to get a logical address for their device memory if a call to HalTranslateBusAddress indicates that the bus-relative device memory range has been mapped to system memory space.
For example, drivers of PIO devices that allocate long-term I/O buffers can call this routine to make such a buffer accessible or to make device memory accessible.
Callers of MmMapIoSpace must be running at IRQL = PASSIVE_LEVEL.
See Also
HalAllocateCommonBuffer, HalTranslateBusAddress, MmAllocateContiguousMemory, MmAllocateNonCachedMemory, MmMapLockedPages, MmUnmapIoSpace