Skip to main content

XMemMapPhysicalPages

将由 XMemAllocatePhysicalPages 分配的页映射到虚拟地址空间中。

语法

参数

VirtualAddress   _In_
类型:PVOID
页应被映射到的地址。 NumberOfPages   _In_
类型:ULONG_PTR
PageArray 中的条目数。 PageArray   _In_reads_opt_(NumberOfPages)
类型:PULONG_PTR
表示要映射的页的页帧编号数组。

返回值

类型:PVOID 物理页已被映射到的虚拟地址;如果发生映射失败,则返回 NULL。 如果发生映射失败,请调用 GetLastError 以获取扩展错误信息。

备注

必须先通过调用 XMemVirtualAlloc 并使用 MEM_RESERVE、页大小为 MEM_64K_PAGESMEM_2MB_PAGES,以及 XMEM_MAPPABLE 标志来预留虚拟地址范围。由 VirtualAlloc 进行的 MEM_PHYSICAL 地址预留不能用于映射此内存。 如果虚拟地址范围已经映射了页,它们将被取消映射。此外,可以为 PageArray 指定 NULL 以便取消提交该内存区域。 XMemMapPhysicalPages 可用于在虚拟地址空间中多次映射同一物理页。如果多次映射同一页,则多个映射必须指定相同的缓存属性(如果未提供缓存属性,则隐式为 CPU 一致;否则可选 PAGE_NOCACHEPAGE_WRITECOMBINE)。
将物理页映射到用 MEM_2MB_PAGES 预留的内存中时,物理页必须使用 XMEM_2MB_CLUSTERS 进行分配。PageArray 参数只应包含每个 2MB 群集的第一个物理页。
示例:

要求

头文件: xmem.h 库: xmem.lib 支持的平台: XBOX One 系列主机和 XBOX Series 主机

另请参阅

XMem 参考
XMemVirtualAlloc
VirtualFree
XMemFreePhysicalPages
最后修改于 2026年8月31日