XMemVirtualAlloc
호출 프로세스의 가상 주소 공간에서 페이지 영역을 예약, 커밋 또는 상태 변경합니다.표준 Win32 VirtualAlloc과 달리 이 함수로 할당된 메모리는 자동으로 0으로 초기화되도록 보장되지 않습니다.
구문
매개 변수
BaseAddress _In_opt_형식: PVOID 할당할 영역의 시작 주소입니다. 메모리가 예약 중인 경우 지정된 주소는 할당 세분성(XBOX에서는 4K, 64K 또는 2MB)의 가장 가까운 배수로 반내림됩니다. 메모리가 이미 예약되어 있고 커밋 중인 경우 주소는 다음 페이지 경계로 반내림됩니다. 이 매개 변수가 NULL이면 시스템이 영역을 할당할 위치를 결정합니다.
Size _In_
형식: SIZE_T 영역의 크기(바이트)입니다. BaseAddress 매개 변수가 NULL인 경우 이 값은 다음 페이지 경계로 반올림됩니다. 그렇지 않으면 할당된 페이지에는 _BaseAddress_에서 BaseAddress+Size 범위 내의 하나 이상의 바이트를 포함하는 모든 페이지가 포함됩니다. 즉, 페이지 경계에 걸쳐 있는 2바이트 범위는 두 페이지가 모두 할당된 영역에 포함되도록 합니다.
AllocationType _In_
형식: DWORD 메모리 할당 유형입니다. 이 매개 변수에는 다음 값 중 하나가 포함되어야 합니다.
이 매개 변수는 다음 값을 지정할 수도 있습니다.
ERA 타이틀의 경우 MEM_LARGE_PAGES는 64K 페이지를 나타냈고, Windows 데스크톱에서는 2MB 페이지를 나타냅니다. 모호성으로 인해 _Microsoft Game Development Kit(GDK)_에서 제거되었습니다.
XMemFlags _In_
형식: ULONGLONG XBOX에서 특정 특수 메모리 유형을 가져오는 데 사용됩니다. 이 매개 변수에는 다음 값 중 하나가 포함되어야 합니다.
XBOX에서는 상위 비트가 사용되지 않도록 보장하는 제한된 가상 메모리 주소를 사용하여 메모리를 할당할 수 있습니다. 다음 값 중 하나를 사용하면 주소가 표시된 비트 수를 사용하도록 제한됩니다. XMEM_40BIT_ADDRESS (0x00007000ULL), XMEM_41BIT_ADDRESS (0x00006000ULL), XMEM_42BIT_ADDRESS (0x00005000ULL), XMEM_43BIT_ADDRESS (0x00004000ULL), XMEM_44BIT_ADDRESS (0x00003000ULL), XMEM_45BIT_ADDRESS (0x00002000ULL), XMEM_46BIT_ADDRESS (0x00001000ULL).
그래픽 메모리는 D3D12Device가 생성되기 전이나 D3DConfigureVirtualMemory가 호출되기 전에 할당할 수 없습니다. GPU에서 볼 수 있는 메모리가 요청되면 타이틀은 명시적인 그래픽 페이지 보호 플래그도 지정해야 합니다. CPU 페이지 보호 설정을 기반으로 하는 기본값은 더 이상 없습니다. 이는 이전 XBOX OS 버전에서 변경된 사항입니다.
Anaconda 디바이스 및 Anaconda를 에뮬레이션하는 Dante 디바이스에서 고급 타이틀 메모리 모드를 사용하는 동안 다음 매개 변수도 적용할 수 있습니다. 이 매개 변수는 다른 모든 경우에는 무시됩니다.
이 플래그는 선택 사항입니다. 지정되지 않은 경우 모든 그래픽 할당은 기본적으로 XMEM_GPU_OPTIMAL_BANDWIDTH_PREFERRED를 사용하고 다른 모든 할당은 기본적으로 XMEM_STANDARD_BANDWIDTH_PREFERRED를 사용합니다.
XMemFlags 매개 변수에는 선택적 4자 코드 태그가 포함되어 있습니다. 문자는 a-z, A-Z, 0-9 및 $ 중 어느 것이든 될 수 있습니다. 이 XMemMakeTag 함수를 사용하여 올바른 비트 위치에 태그 값의 올바른 인코딩을 구성할 수 있습니다. 태그는 예약이 아닌 커밋된 메모리 영역에만 연결할 수 있습니다. 이 4자 코드 태그는 매개 변수의 상위 24비트로 표시됩니다. 태그는 XMemVirtualQuery를 통해 검색할 수 있으며 PIX 메모리 분석에도 표시됩니다.
예제:
PageProtection _In_
형식: DWORD 할당할 페이지 영역에 대한 메모리 보호입니다. 페이지가 커밋 중인 경우 메모리 보호 상수 중 하나를 지정할 수 있습니다. PageProtection 매개 변수에 다음 XBOX 관련 값이 허용되며, XMEM_GRAPHICS 또는 XMEM_GRAPHICS_32BIT_ADDRESS가 지정된 경우 하나가 필요합니다. 이 요구 사항은 이전 버전의 XBOX OS에서 변경된 사항입니다. XMEM_GRAPHICS로 할당된 범위 내의 메모리 주소에 대해 다른 메모리 관리 함수(예: VirtualProtect)에도 이 값을 지정할 수 있습니다.
이 매개 변수는 다음 값을 지정할 수도 있습니다.
반환 값
형식: PVOID 함수가 성공하면 반환 값은 할당된 페이지 영역의 기본 주소입니다. 함수가 실패하면 반환 값은 NULL입니다. 확장 오류 정보를 가져오려면 GetLastError를 호출하세요.설명
각 페이지에는 연결된 페이지 상태가 있습니다. XMemVirtualAlloc 함수는 다음 작업을 수행할 수 있습니다.- 예약된 페이지 영역 커밋
- 사용 가능한 페이지 영역 예약
- 사용 가능한 페이지 영역을 동시에 예약 및 커밋
요구 사항
헤더: xmem.h 라이브러리: xmem.lib 지원 플랫폼: XBOX One 제품군 콘솔 및 XBOX Series 콘솔함께 보기
XMem 참조XMemMapPhysicalPages
VirtualFree
