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