AllocateUserPhysicalPages 関数 (memoryapi.h)

指定したプロセスの アドレス ウィンドウ拡張機能 (AWE) リージョン内でマップおよびマップ解除する物理メモリ ページを割り当てます。

Itanium ベースのシステム上の 64 ビット Windows: ページ サイズの違いにより、 AllocateUserPhysicalPages は 32 ビット アプリケーションではサポートされていません。

構文

BOOL AllocateUserPhysicalPages(
  [in]      HANDLE     hProcess,
  [in, out] PULONG_PTR NumberOfPages,
  [out]     PULONG_PTR PageArray
);

パラメーター

[in] hProcess

プロセスへのハンドル。

関数は、このプロセスの仮想アドレス空間内で後でマップできるメモリを割り当てます。 ハンドルには 、PROCESS_VM_OPERATION アクセス権が必要です。 詳細については、「 プロセス のセキュリティとアクセス権」を参照してください。

[in, out] NumberOfPages

割り当てる物理メモリのサイズ (ページ単位)。

コンピューターのページ サイズを確認するには、 GetSystemInfo 関数を使用します。 出力時に、このパラメーターは、実際に割り当てられたページの数を受け取ります。これは、要求された数より小さい可能性があります。

[out] PageArray

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

割り当てられる配列のサイズは、少なくとも NumberOfPagesULONG_PTR データ型のサイズの倍である必要があります。

このバッファーの変更を試みないでください。 これにはオペレーティング システム データが含まれており、破損が致命的になる可能性があります。 バッファー内の情報は、アプリケーションには役に立ちません。

戻り値

関数が成功した場合、戻り値は TRUE になります

割り当て可能なページ数は、要求されたページ数よりも少なくなります。 呼び出し元は、割り当てられているページ数を確認するために、戻り値の NumberOfPages パラメーターの値をチェックする必要があります。 割り当てられたページ フレーム番号はすべて、 UserPfnArray パラメーターによって指されるメモリに順番に配置されます。

関数が失敗した場合、戻り値は FALSE で、フレームは割り当てされません。 詳細なエラー情報を得るには、GetLastError を呼び出します。

解説

AllocateUserPhysicalPages 関数は、プロセスの仮想アドレス空間内で後でマップできる物理メモリを割り当てるために使用されます。 呼び出し元のトークンで SeLockMemoryPrivilege 特権を有効にする必要があります。または、関数は ERROR_PRIVILEGE_NOT_HELD で失敗します。 詳細については、「特権定数」を参照してください。

この関数によって割り当てられるメモリは、システムに物理的に存在している必要があります。 メモリが割り当てられると、そのメモリはロックダウンされ、仮想メモリ管理システムの残りの部分では使用できなくなります。

物理ページを複数の仮想アドレスに同時にマップすることはできません。

物理ページは、任意の物理アドレスに存在できます。 物理ページの連続性については、何も想定しないでください。

この関数を使用するアプリケーションをコンパイルするには、_WIN32_WINNT マクロを 0x0500 以降として定義します。 詳細については、「 Windows ヘッダーの使用」を参照してください。

後のリリースで SDK に追加された AllocateUserPhysicalPages2AllocateUserPhysicalPages と同じですが、ExtendedParameters パラメーターと ExtendedParameterCount パラメーターが追加されます。

例については、「 AWE の例」を参照してください。

要件

要件
サポートされている最小のクライアント Windows XP (デスクトップ アプリのみ)
サポートされている最小のサーバー Windows Server 2003 (デスクトップ アプリのみ)
対象プラットフォーム Windows
ヘッダー memoryapi.h (Windows.h、Memoryapi.h を含む)
Library onecore.lib
[DLL] Kernel32.dll

関連項目

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

AllocateUserPhysicalPagesNuma

FreeUserPhysicalPages

MapUserPhysicalPages

MapUserPhysicalPagesScatter

メモリ管理関数

AllocateUserPhysicalPages2