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 콜백을 호출하는 것을 활성화합니다. 이 옵션이 없으면 realloc이 발생한 후 이전 주소와 새 주소로 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)
이 옵션은 일반적으로 내부 XMem 힙에서 처리하는 모든 할당을 XMemVirtualAlloc 호출로 승격하도록
XMemAllocDefault를 구성합니다. 또한 메모리는 VirtualFree(MEM_DECOMMIT)를 사용하여 해제됩니다. 이는 의도적으로 가상 주소 공간을 누수시키고 결국 할당 실패로 이어지지만, use-after-free 오류를 잡는 데 유용한 진단 도구입니다. 승격 로직에 대한 소스 코드는 Microsoft Game Development Kit(GDK)의 일부로 제공됩니다. 자세한 내용은 \GXDK\gameKit\Source\amd64\heap.c의 XmpTrapUseAfterFree 변수의 사용을 참조하세요.
eXMEMOPT_XMEMALLOCDEFAULT_USE64KPAGES (BOOL)
이 옵션은 내부 XMem 힙에 대해 2MB 페이지 대신 64KB 페이지를 사용하도록
XMemAllocDefault를 구성합니다. 또한 64KB 페이지를 사용하는 힙은 2MB 대신 512KB의 커밋/커밋 해제 세분성을 갖습니다. XMemAllocDefalt 구현에 대한 소스 코드는 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 콘솔
