AllocateUserPhysicalPagesNuma

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

AllocateUserPhysicalPagesNuma hProcess, NumberOfPages, PageArray, nndPreferred

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

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

解説

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

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

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

情報

プラグイン / モジュール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