PAGP_RESERVE_VIRTUAL コールバック関数 (videoagp.h)
AgpReserveVirtual 関数は、AGP の仮想アドレスの範囲を予約します。
構文
PAGP_RESERVE_VIRTUAL PagpReserveVirtual;
PVOID PagpReserveVirtual(
[in] IN PVOID HwDeviceExtension,
[in] IN HANDLE ProcessHandle,
[in] IN PVOID PhysicalReserveContext,
[out] OUT PVOID *VirtualReserveContext
)
{...}
パラメーター
[in] HwDeviceExtension
ミニポート ドライバーのデバイス拡張機能へのポインター。
[in] ProcessHandle
仮想アドレス範囲を予約するプロセスのハンドル。 ProcessHandle が 0 の場合、仮想アドレス範囲はシステム空間に割り当てられます。
[in] PhysicalReserveContext
仮想メモリ予約を関連付ける予約済み物理アドレス範囲を識別するコンテキスト ハンドルです。 このコンテキストは 、AgpReservePhysical から取得されました。
[out] VirtualReserveContext
ビデオ ポート ドライバーが、予約済み仮想メモリを識別するコンテキスト ハンドルを書き込む場所です。
戻り値
成功した場合、AgpReserveVirtual は予約済み仮想アドレス範囲のベース アドレスを返します。それ以外の場合は NULL を返します。
注釈
ProcessHandle が 0 でない場合、AgpReserveVirtual は、ユーザー モード プロセスのアドレス空間内の仮想アドレスの範囲を予約しますが、コミットしません。 その場合は、 AgpCommitVirtual を呼び出して、予約済み (ユーザー モード) 仮想アドレスを物理アドレスにマップする必要があります。
ProcessHandle が 0 の場合、AgpReserveVirtual はシステム空間に仮想アドレスの範囲を割り当て、仮想アドレスの範囲全体を物理アドレスに自動的にマップ (コミット) します。 AgpReserveVirtual は仮想範囲全体をコミットしますが、コードが仮想範囲にアクセスする前に AgpCommitVirtual を呼び出す必要があります。
AgpReserveVirtual を呼び出してシステム空間に仮想アドレスの範囲を割り当てる場合 (つまり、ProcessHandle を 0 に設定した場合)、PhysicalReserveContext によって識別される物理アドレスの範囲全体が、以前の AgpCommitPhysical の呼び出しによって物理メモリのロックされたページにコミットされる必要があります。
ミニポート ドライバーは 、AgpReleaseVirtual を複数回呼び出して、1 つの大きな範囲ではなく、多数の小さなアドレス範囲を予約できます。
ミニポート ドライバーは 、AgpReleaseVirtual を呼び出して、不要になったときに予約済みの仮想アドレス範囲を解放する必要があります。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 以降のバージョンの Windows オペレーティング システムで使用できます。 |
対象プラットフォーム | デスクトップ |
Header | videoagp.h (Video.h を含む) |
IRQL | PASSIVE_LEVEL |