XMemVirtualAlloc
呼び出し元プロセスの仮想アドレス空間内のページ領域を予約、コミット、または状態変更します。標準の Win32 VirtualAlloc とは異なり、この関数によって割り当てられるメモリは自動的にゼロ初期化されることが 保証されません。
Syntax
Parameters
BaseAddress _In_opt_型: PVOID 割り当てるリージョンの開始アドレス。メモリを予約する場合、指定されたアドレスは割り当て粒度 (XBOX では 4K、64K、または 2MB) の最も近い倍数に切り下げられます。メモリが既に予約されていてコミットされる場合、アドレスは次のページ境界に切り下げられます。このパラメーターが NULL の場合、システムがリージョンを割り当てる場所を決定します。
Size _In_
型: SIZE_T リージョンのサイズ (バイト単位)。BaseAddress パラメーターが NULL の場合、この値は次のページ境界に切り上げられます。それ以外の場合、割り当てられるページには BaseAddress から BaseAddress+Size の範囲内の 1 バイト以上を含むすべてのページが含まれます。つまり、ページ境界にまたがる 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 バージョンからの変更点です。
Advanced タイトル メモリ モードを使用している場合の 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 割り当てるページ リージョンのメモリ保護。ページをコミットする場合、メモリ保護定数 のいずれかを指定できます。 XMEM_GRAPHICS または XMEM_GRAPHICS_32BIT_ADDRESS を指定する場合、PageProtection パラメーターに次の XBOX 固有の値のいずれかが許可され、1 つが必須です。この要件は以前の XBOX OS バージョンからの変更点です。これらの値は、XMEM_GRAPHICS で割り当てられた範囲内のメモリ アドレスに対して他のメモリ管理関数 (例: VirtualProtect) にも指定できます。
このパラメーターは、次の値を指定することもできます。
Return value
型: PVOID 関数が成功した場合、戻り値は割り当てられたページ リージョンのベース アドレスです。 関数が失敗した場合、戻り値は NULL です。拡張エラー情報を取得するには、GetLastError を呼び出します。Remarks
各ページには関連付けられた ページ状態 があります。XMemVirtualAlloc 関数は次の操作を実行できます:- 予約済みページ領域のコミット
- 空きページ領域の予約
- 空きページ領域の予約とコミットを同時に実行
Requirements
ヘッダー: xmem.h ライブラリ: xmem.lib サポートされているプラットフォーム: XBOX One ファミリー本体および XBOX Series 本体See also
XMem referenceXMemMapPhysicalPages
VirtualFree
