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)
NtosKrnl.lib
DLL NtosKrnl.exe
IRQL IRQL <=DISPATCH_LEVEL

另请参阅

mmAllocateContiguousMemory

mmAllocateNonCachedMemory

mmMapLockedPages

mmUnmapIoSpace