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