Skip to main content

XMemMapPhysicalPagesScatter

将物理页映射到虚拟内存中。

语法

参数

*VirtualAddressArray   _In_
类型:PVOID
页应被映射到的虚拟地址的数组。此参数不能设置为 NULL。使用带有 MEM_RESERVEXMEM_MAPPABLEXMemVirtualAlloc 来预留供 XMemMapPhysicalPagesScatter 使用的内存地址范围。预留的虚拟地址还必须通过 XMemVirtualAllocMEM_64K_PAGES 选项以 64k 页创建。 NumberOfPages   _In_
类型:ULONG_PTR
PageArrayVirtualAddressArray 中的条目数。仅支持通过使用 MEM_64K_PAGES 选项的 XMemVirtualAlloc 预留的 64k 页。 PageArray   _In_reads_opt_(NumberOfPages)
类型:PULONG_PTR
表示要映射的物理页的页帧编号 (PFN) 数组。此参数可以设置为 NULL。如果 PageArray 设置为 NULL,则此函数将执行取消映射操作。如果数组中的单个条目设置为 NULL,则相应的虚拟地址将被取消映射。

返回值

类型:BOOL 如果映射成功,则返回 TRUE;否则,如果发生映射失败,则返回 FALSE

备注

此函数将 VirtualAddressArrayPageArray 视为具有相同长度的并行数组,长度由 NumberOfPages 指定。VirtualAddressArray 每个数组元素中的每个虚拟地址将根据 PageArray 被映射或取消映射:
  • 如果 PageArray 中的数组元素设置为一个 PFN,则 VirtualAddressArray 中相应数组元素的虚拟地址将映射到该 PFN。
  • 如果 PageArray 中的数组元素设置为 NULL,则 VirtualAddressArray 中相应数组元素的虚拟地址将被取消映射。
  • 如果 PageArray 设置为 NULL,则 VirtualAddressArray 中的每个虚拟地址都将被取消映射。
为获得最佳性能,位于同一 2 MB 窗口内(大小和对齐都在其中)的虚拟地址应连续且按升序提供。这允许操作系统机会性地进行前瞻,并确定是否可以将某些以 CPU 页粒度进行的操作推迟到组的末尾。有关将物理页映射到虚拟地址的详细信息,请参阅使用 Microsoft GDK Game OS 内存管理器

要求

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

另请参阅

XMemVirtualAlloc
XMem
最后修改于 2026年8月24日