mmMapIoSpaceEx 函数 (wdm.h)
MmMapIoSpaceEx 例程使用指定的页面保护将给定的物理地址范围映射到非分页系统空间。
语法
PVOID MmMapIoSpaceEx(
[in] PHYSICAL_ADDRESS PhysicalAddress,
[in] SIZE_T NumberOfBytes,
[in] ULONG Protect
);
参数
[in] PhysicalAddress
指定要映射的 I/O 范围的起始物理地址。
[in] NumberOfBytes
指定大于零的值,指示要映射的字节数。
[in] Protect
标记指定要用于映射范围的保护的位。 调用方必须在 Protect 参数中设置以下标志位之一。
标记位 | 含义 |
---|---|
PAGE_READONLY | 映射的范围只能读取,不能写入。 |
PAGE_READWRITE | 映射的范围可以读取或写入。 |
PAGE_EXECUTE | 映射的范围可以执行,但不能读取或写入。 |
PAGE_EXECUTE_READ | 映射的范围可以执行或读取,但不能写入。 |
PAGE_EXECUTE_READWRITE | 映射的范围可以执行、读取或写入。 |
此外,调用方可以在 Protect 参数中设置一个 (但不能同时) 以下可选标志位。
标记位 | 含义 |
---|---|
PAGE_NOCACHE | 指定非缓存内存。 |
PAGE_WRITECOMBINE | 指定写入组合内存 (内存不应由处理器缓存,但对内存的写入可由处理器) 合并。 |
返回值
MmMapIoSpaceEx 返回映射范围基本物理地址的基虚拟地址。 如果用于映射范围的空间不足,则返回 NULL。
注解
如果驱动程序在CM_PARTIAL_RESOURCE_DESCRIPTOR结构中收到 CmResourceTypeMemory 类型的转换资源,则驱动程序必须在 设备 启动时调用此例程。 MmMapIoSpaceEx 将资源列表中返回的物理地址映射到驱动程序可以访问设备寄存器的虚拟地址。
例如,分配长期 I/O 缓冲区的 PIO 设备的驱动程序可以调用此例程,使此类缓冲区可访问或使设备内存可访问。
有关使用此例程的详细信息,请参阅 将 Bus-Relative 地址映射到虚拟地址。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 从Windows 10开始可用。 |
目标平台 | 通用 |
标头 | wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | <=DISPATCH_LEVEL |