<Return[A]><Top>

AllocateUserPhysicalPages

Declare Function Api_AllocateUserPhysicalPages& Lib "kernel32" Alias "AllocateUserPhysicalPages" (ByVal hProcess&, ByRef NumberOfPages As OUT, ByRef PageArray As PULONG_PTR)

Declare Function AllocateUserPhysicalPages Lib "kernel32" Alias "AllocateUserPhysicalPages" (ByVal hProcess As Long, ByRef NumberOfPages As OUT, ByRef PageArray As PULONG_PTR) As Long

指定されたプロセスの任意の(AWE)仮想アドレス空間内にマップまたはマップ解除を行いたい物理メモリページを割り当てる。
呼び出し側はこの呼び出しを成功させるために、Lock Pages in Memory(メモリページロック)特権を備えていなければならない。

パラメータ
hProcess
    [入力]プロセスのハンドルを指定する。この関数は、このプロセスの仮想アドレス空間内にメモリを割り当てる。呼び出し側のアプリケー

    ションを実行するユーザーは、このプロセスに対する Lock Pages in Memory 特権を備えていなければならない。この特権がない場合、この

    関数は失敗する。
NumberOfPages
    [入出力]割り当てたい物理メモリのサイズをページ単位で指定する。コンピュータのページサイズを決定するには、 関数を使う。また、

    このパラメータは、実際に割り当てられたページ数を返すが、このページ数が要求のページ数を下回っていることもある。
UserPfnArray
    [出力]割り当て済みのメモリのページフレーム番号を格納したい仮想アドレスを指定する。割り当て済みのメモリのサイズは、少なくとも

    ULONG_PTR データ型のサイズの NumberOfPages 倍であるべきである。
    このバッファの内容を変更してはならない。このバッファはオペレーティングシステムのデータを保持しているので、内容が変更されると深刻な

    影響が生じる可能性がある。このバッファは、アプリケーションにとって役立つ情報を保持していない。

戻り値
    関数が成功すると、TRUE が返る。要求したページ数より少ないページ数が割り当てられることがある。呼び出し側は返された

    NumberOfPages パラメータの値をチェックして、実際に割り当てられたページ数を調べなければならない。割り当てられたすべてのページの

    フレーム番号は、UserPfnArray パラメータが指すメモリ内に順に格納されている。
    関数が失敗すると、FALSE が返り、フレームは割り当てられない。拡張エラー情報を取得するには、GetLastError を使う。

解説
    AllocateUserPhysicalPages 関数を使って、物理メモリを割り当てる。この関数が割り当てるメモリは、システム内に物理的に存在してい

    るものでなければならない。いったん割り当てられたメモリはロックされ、Windows 2000 の仮想メモリ管理システムの他の部分からは利用で

    きない。
    特定の物理ページは、一度に複数の仮想アドレスへマップできないことに注意する。
    物理ページは、任意の物理アドレスに存在できる。複数の物理ページが連続していると仮定するべきではない。
    コンピュータのページサイズを決定するには、 関数を使う。