次の方法で共有


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

割り当てられたメモリのページ フレーム番号を格納する配列へのポインター。

割り当てられる配列のサイズは、少なくとも NumberOfPagesULONG_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

関連項目

アドレス ウィンドウ拡張機能

AllocateUserPhysicalPages

FreeUserPhysicalPages

メモリ管理関数

NUMA サポート