VideoPortMapBankedMemory 関数 (video.h)
VideoPortMapBankedMemory 関数は廃止され、Windows NT 4.0 以前のドライバーでのみサポートされています。 Windows 2000 以降のドライバーでは 、VideoPortMapMemory を使用する必要があります。
VideoPortMapBankedMemory は、 IoControlCode メンバーが IOCTL_VIDEO_SHARE_VIDEO_MEMORY または IOCTL_VIDEO_MAP_VIDEO_MEMORY に設定された VRP に応答して、バス相対物理範囲のビデオ メモリを対応するディスプレイ ドライバーの仮想アドレス空間に再マップします。
構文
VIDEOPORT_DEPRECATED VIDEOPORT_API VP_STATUS VideoPortMapBankedMemory(
PVOID HwDeviceExtension,
PHYSICAL_ADDRESS PhysicalAddress,
PULONG Length,
PULONG InIoSpace,
PVOID *VirtualAddress,
ULONG BankLength,
UCHAR ReadWriteBank,
PBANKED_SECTION_ROUTINE BankRoutine,
PVOID Context
);
パラメーター
HwDeviceExtension
ミニポート ドライバーのデバイス拡張機能へのポインター。
PhysicalAddress
マップする範囲のバス相対ベース アドレスを指定します。
Length
マップするデバイス メモリの合計バイト数を指定する変数へのポインター (銀行のサイズに関係なく)。 VideoPortMapBankedMemory は、このパラメーターで、システムによって決定された配置境界に丸めることができる、マップされたメモリの実際のサイズを返します。 ただし、ミニポート ドライバーとディスプレイ ドライバーは 、長さの入力値で区切られた範囲外のメモリにアクセスできません。
InIoSpace
範囲の場所を示します。 このパラメーターには、次のいずれかの値を指定できます。
値 | 意味 |
---|---|
VIDEO_MEMORY_SPACE_DENSE | 古い |
VIDEO_MEMORY_SPACE_IO | この範囲は、メモリ空間ではなく、システム I/O 領域にあります。 |
VIDEO_MEMORY_SPACE_MEMORY | この範囲は、システム I/O 領域ではなくメモリ領域にあります。 |
VIDEO_MEMORY_SPACE_P6CACHE | プロセッサは、一連の書き込み操作を集計し、特定のキャッシュ行に送信します。 その後、プロセッサによってキャッシュがフラッシュされます。 このフラグは、VIDEO_MEMORY_SPACE_IOが設定されていない場合にのみ意味があります。 |
VIDEO_MEMORY_SPACE_USER_MODE | 指定されたアドレス範囲をカーネル モードではなくユーザー モードにマップする必要があることを示します。 このフラグは、VIDEO_MEMORY_SPACE_IOが設定されていない場合にのみ意味があります。 |
VirtualAddress
メモリをマップする必要があるプロセスのハンドル ( NULL) です。 NULL は 、ポート ドライバーが現在のプロセスのアドレス空間内の任意の場所に論理メモリ範囲をマップすることを指定します。 それ以外の場合、このハンドルには、ミニポート ドライバーの対応するディスプレイ ドライバーによって VRP に渡される値を指定できます。 呼び出しが成功すると、 VideoPortMapBankedMemory は、指定された PhysicalAddress をマップしたベース仮想アドレスに変数をリセットします。
BankLength
バンクのサイズをバイト単位で指定します。
ReadWriteBank
TRUE に設定すると、銀行は読み取り/書き込みになります。FALSE に設定されている場合は、2 つの独立した読み取りおよび書き込みバンクがあります。
BankRoutine
新しいバンクがディスプレイ ドライバーからアクセスされたときにメモリ マネージャーによって呼び出されるドライバー提供の HwVidBankedMemoryCallback 関数へのポインター。
Context
BankRoutine が呼び出されたときにドライバーに返されるミニポート ドライバー提供のコンテキストへのポインター。
戻り値
指定された論理範囲がユーザー空間の仮想範囲に正常にマップされた場合、VideoPortMapBankedMemory はNO_ERRORを返します。 それ以外の場合は、ERROR_INVALID_PARAMETERを返すことができます。
注釈
VideoPortMapBankedMemory は、呼び出しを開始したユーザー モード スレッドと同じコンテキスト内でカーネル モードで実行されます。
VideoPortMapBankedMemory は、バンク内のフレーム バッファーのマッピングに制限されている x86 型デバイスを効率的に管理するために、ミニポート ドライバーによって呼び出されます。 このルーチンが呼び出し元に戻ると、ミニポート ドライバーによって管理されるフレーム バッファーは、要求プロセスのアドレス空間に線形フレーム バッファーとしてマップされます ( 「VirtualAddress パラメーター」を参照)。 割り当てられた領域のアドレスへのアクセスが行われると、メモリ マネージャーはミニポート ドライバーを呼び出して、現在参照されているアドレスを含む新しい銀行を指すように銀行インデックス レジスタを更新します。 BankRoutine のミニポート ドライバーによって、銀行インデックス レジスタが維持されます。 正しいバンク インデックスは、メモリ マネージャーによってディスプレイ ドライバーに透過的に計算され、 BankRoutine へのコールバックでミニポート ドライバーに渡されます。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows 2000 以降のバージョンの Windows オペレーティング システムで使用できます。 |
対象プラットフォーム | デスクトップ |
Header | video.h (Video.h を含む) |
Library | Videoprt.lib |
[DLL] | Videoprt.sys |
IRQL | PASSIVE_LEVEL |
こちらもご覧ください
IOCTL_VIDEO_SHARE_VIDEO_MEMORY