AllocateUserPhysicalPages

指定されたプロセスの Address Windowing Extensions (AWE) 領域内でマップ/アンマップするための物理メモリページを割り当てる。

AllocateUserPhysicalPages hProcess, NumberOfPages, PageArray

hProcess : [intptr] プロセスへのハンドル。関数は、後でこのプロセスの仮想アドレス空間にマップできるメモリを割り当てる。ハンドルは PROCESS_VM_OPERATION アクセス権を持っている必要がある。詳細は Process Security and Access Rights を参照。
NumberOfPages : [var] 割り当てる物理メモリのサイズ(ページ単位)。コンピュータのページサイズを決定するには GetSystemInfo 関数を使う。出力時、このパラメータは実際に割り当てられたページ数を受け取り、要求数より少ない場合がある。
PageArray : [var] 割り当てられたメモリのページフレーム番号を格納する配列へのポインタ。割り当てる配列のサイズは、少なくとも NumberOfPages × ULONG_PTR 型のサイズが必要。

(プラグイン / モジュール : kernel32.dll)

解説

指定されたプロセスの Address Windowing Extensions (AWE)
領域内でマップ/アンマップするための物理メモリページを割り当てる。

[戻り値]
関数が成功した場合、戻り値は TRUE。要求より少ないページが割り当てられることもある。呼び出し側は戻り値とは別に
NumberOfPages
パラメータの値を確認して、実際に何ページ割り当てられたかを確認する必要がある。割り当てられたすべてのページフレーム番号は
UserPfnArray パラメータが指すメモリに順番に格納される。
関数が失敗した場合、戻り値は FALSE で、フレームは何も割り当てられない。拡張エラー情報を取得するには GetLastError
を呼ぶ。

[備考]
AllocateUserPhysicalPages
関数は、後でプロセスの仮想アドレス空間にマップできる物理メモリを割り当てるために使われる。呼び出し側のトークンで
SeLockMemoryPrivilege 特権が有効になっている必要があり、そうでない場合は関数が
ERROR_PRIVILEGE_NOT_HELD で失敗する。詳細は Privilege Constants
を参照。この関数で割り当てられたメモリは物理的にシステムに存在する必要がある。メモリが割り当てられると、ロックされて仮想メモリ管理システムの他の部分では利用できなくなる。物理ページは同時に複数の仮想アドレスへマップすることはできない。物理ページは任意の物理アドレスに配置される。物理ページの連続性については仮定してはならない。この関数を使用するアプリケーションをコンパイルするには、_WIN32_WINNT
マクロを 0x0500 以降として定義する。詳細は Using the Windows Headers を参照。

情報

プラグイン / モジュールkernel32.dll
バージョン1.0
作成日2026/04/16
著作者IronHSP / CsWin32 bridge
URLhttps://github.com/inovia/IronHSP
備考Win32 API の kernel32.dll 関数群。CsWin32 + win32metadata から自動生成。
hsp3net 専用 (intptr / NSTRUCT / wstr を使用)。
タイプ拡張命令
グループWin32API
対応環境
  • Windows 版 HSP
hs ファイルhsphelp\win32_kernel32_gen2.hs