Skip to main content

XMemSetOption

设置 XMem 的配置项。

语法

参数

option   _In_
类型:XMEM_OPTION
要设置的选项配置。

返回值

类型:void

备注

XMemSetOption 用于配置 XMem 系统的可选行为。 eXMEMOPT_VALIDATE_XMEMALLOC (BOOL)
启用对通过调用 XMemAlloc 所返回的内存属性的验证,以确保其满足所请求内存类型的对齐、页大小、页保护和缓存属性。此项旨在于开发阶段使用,以捕获 XMemAlloc 私有实现中的错误。验证逻辑的源代码作为 Microsoft Game Development Kit (GDK) 的一部分提供。有关详细信息,请参阅 \GXDK\gameKit\Source\amd64\heap.c 中的 XmpVerifyXMemAllocRoutine 函数。

eXMEMOPT_RAISE_HEAPFREE_CALLBACK_ON_REALLOC (BOOL)
启用在调用 HeapReAlloc 时调用由 XMemSetWin32HeapTrackingHooks 配置的 HeapFree 回调。在未设置此选项时,HeapReAlloc 回调将在重新分配完成后被调用,并传入旧地址和新地址。设置此选项后,还会在 HeapReAlloc 调用之前使用旧地址额外调用 HeapFree 回调。

eXMEMOPT_XMEMALLOCDEFAULT_TAG_VIRTUALALLOC (BOOL)
XMemAllocDefault 为满足分配而进行的每次 XMemVirtualAlloc 调用上添加提交标签(例如,当分配请求过大而无法容纳在内部 XMem 堆中时)。提交标签使用 XMemMakeTag(‘XmVA’) 添加。这使开发者能够计算 XMemAllocDefault 消耗的总内存量。有关详细信息,请参阅诊断和内存跟踪

eXMEMOPT_SET_XMEM_TAG_TREE_SIZE (INT)
设置后,为自定义 XMem 标签分配的存储空间将被设置为指定的大小(以 MB 为单位)。

eXMEMOPT_XMEM_WARN_WHEN_TAG_TREE_FULL (BOOL)
设置后,如果自定义 XMem 标签的已分配存储被耗尽,将通过 XError 引发运行时警告。

eXMEMOPT_XMEMALLOCDEFAULT_DISABLEPAGESIZEDEMOTION (BOOL)
XMemAllocDefault 使用的内部 XMem 堆最初使用 2MB 页创建,但会配置为在使用 2MB 页扩展堆失败时回退降级为 64KB 页。此标志禁用该降级行为。页大小降级逻辑的源代码作为 Microsoft Game Development Kit (GDK) 的一部分提供。有关详细信息,请参阅 \GXDK\gameKit\Source\amd64\heap.c 中的 XmpAllocateHeapMemory 函数。

eXMEMOPT_XMEMALLOCDEFAULT_TRAPUSEAFTERFREE (BOOL)
此选项将 XMemAllocDefault 配置为将任何本应由内部 XMem 堆处理的分配提升为 XMemVirtualAlloc 调用。此外,内存使用 VirtualFree(MEM_DECOMMIT) 释放。虽然这会有意泄漏虚拟地址空间并最终导致分配失败,但它对于捕获释放后使用(use-after-free)错误是有用的诊断辅助手段。提升逻辑的源代码作为 Microsoft Game Development Kit (GDK) 的一部分提供。有关详细信息,请参阅 \GXDK\gameKit\Source\amd64\heap.cXmpTrapUseAfterFree 变量的用法。

eXMEMOPT_XMEMALLOCDEFAULT_USE64KPAGES (BOOL)
此选项将 XMemAllocDefault 配置为对内部 XMem 堆使用 64KB 页而非 2MB 页。此外,使用 64KB 页的堆具有 512KB 而非 2MB 的提交/取消提交粒度。XMemAllocDefault 实现的源代码作为 Microsoft Game Development Kit (GDK) 的一部分提供。有关详细信息,请参阅文件 \GXDK\gameKit\Source\amd64\heap.c

eXMEMOPT_ALLOW_WRITEABLE_FILEMAPPINGS (BOOL)
启用后,此选项允许对 CreateFileMappingA/W 使用可写标志进行的调用成功。

要求

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

另请参阅

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