AllocateUserPhysicalPagesNuma 関数 (memoryapi.h)
指定したプロセスの アドレス ウィンドウ拡張機能 (AWE) 領域内でマップおよびマップ解除される物理メモリ ページを割り当て、物理メモリの NUMA ノードを指定します。
構文
BOOL AllocateUserPhysicalPagesNuma(
[in] HANDLE hProcess,
[in, out] PULONG_PTR NumberOfPages,
[out] PULONG_PTR PageArray,
[in] DWORD nndPreferred
);
パラメーター
[in] hProcess
プロセスへのハンドル。
関数は、このプロセスの仮想アドレス空間内で後でマップできるメモリを割り当てます。 ハンドルには 、PROCESS_VM_OPERATION アクセス権が必要です。 詳細については、「 プロセス のセキュリティとアクセス権」を参照してください。
[in, out] NumberOfPages
割り当てる物理メモリのサイズ (ページ単位)。
コンピューターのページ サイズを確認するには、 GetSystemInfo 関数を使用します。 出力時に、このパラメーターは、実際に割り当てられたページの数を受け取ります。これは、要求された数より小さい可能性があります。
[out] PageArray
割り当てられたメモリのページ フレーム番号を格納する配列へのポインター。
割り当てられる配列のサイズは、少なくとも NumberOfPages が ULONG_PTR データ型のサイズの倍である必要があります。
[in] nndPreferred
物理メモリが存在する必要がある NUMA ノード。
戻り値
関数が成功した場合、戻り値は TRUE になります。
割り当て可能なページ数は、要求されたページ数よりも少なくなります。 呼び出し元は、割り当てられているページ数を確認するために、戻り値の NumberOfPages パラメーターの値をチェックする必要があります。 割り当てられたすべてのページ フレーム番号は、 PageArray パラメーターによって指されるメモリに順番に配置されます。
関数が失敗した場合、戻り値は FALSE で、フレームは割り当てされません。 エラーの詳細情報を得るには、GetLastError 関数を呼び出します。
解説
AllocateUserPhysicalPagesNuma 関数は、プロセスの仮想アドレス空間内で後でマップできる NUMA ノード内で物理メモリを割り当てるために使用されます。 呼び出し元のトークンで SeLockMemoryPrivilege 特権を有効にする必要があります。または、関数は ERROR_PRIVILEGE_NOT_HELD で失敗します。 詳細については、「特権定数」を参照してください。
この関数によって割り当てられるメモリは、システムに物理的に存在している必要があります。 メモリが割り当てられると、そのメモリはロックダウンされ、仮想メモリ管理システムの残りの部分では使用できなくなります。
物理ページを複数の仮想アドレスに同時にマップすることはできません。
物理ページは、任意の物理アドレスに存在できます。 物理ページの連続性については、何も想定しないでください。
この関数を使用するアプリケーションをコンパイルするには、 _WIN32_WINNTを 0x0600 以降として定義します。
要件
サポートされている最小のクライアント | Windows Vista [デスクトップ アプリのみ] |
サポートされている最小のサーバー | Windows Server 2008 [デスクトップ アプリのみ] |
対象プラットフォーム | Windows |
ヘッダー | memoryapi.h (Windows.h、Memoryapi.h を含む) |
Library | onecore.lib |
[DLL] | Kernel32.dll |