mmMapIoSpace 函数 (wdm.h)

MmMapIoSpace 例程将给定的物理地址范围映射到非分页系统空间。

语法

PVOID MmMapIoSpace(
  [in] PHYSICAL_ADDRESS    PhysicalAddress,
  [in] SIZE_T              NumberOfBytes,
  [in] MEMORY_CACHING_TYPE CacheType
);

参数

[in] PhysicalAddress

指定要映射的 I/O 范围的起始物理地址。

[in] NumberOfBytes

指定大于零的值,指示要映射的字节数。

[in] CacheType

指定 MEMORY_CACHING_TYPE 值,该值指示用于映射物理地址范围的缓存属性。

返回值

MmMapIoSpace 返回映射范围基本物理地址的基虚拟地址。 如果用于映射范围的空间不足,则返回 NULL

注解

如果驱动程序在CM_PARTIAL_RESOURCE_DESCRIPTOR结构中收到 CmResourceTypeMemory 类型的转换资源,则驱动程序必须在 设备 启动时调用此例程。 MmMapIoSpace 将资源列表中返回的物理地址映射到驱动程序可以访问设备寄存器的逻辑地址。

MmMapIoSpace 只能用于锁定 (属于 MDL 或 I/O 空间) 的锁定页的页面,否则内存的所有者可以释放它 (或内存可以分页/传出等 ) 。

例如,分配长期 I/O 缓冲区的 PIO 设备的驱动程序可以调用此例程,使此类缓冲区可访问或使设备内存可访问。

有关使用此例程的详细信息,请参阅 将 Bus-Relative 地址映射到虚拟地址

要求

要求
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <=DISPATCH_LEVEL

另请参阅

MmAllocateContiguousMemory

MmAllocateNonCachedMemory

MmMapLockedPages

MmUnmapIoSpace