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 は、マップされたメモリの実際のサイズを返します。このパラメーターでは、システムによって決定された配置境界に丸めることができます。 ただし、ミニポート ドライバーとディスプレイ ドライバーは、Lengthの入力値で区切られた範囲外のメモリにアクセスできません。
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 パラメーターを参照してください)。 マップされた空間内のアドレスへのアクセスが行われると、メモリ マネージャーはミニポート ドライバーを呼び出して、現在参照されているアドレスを含む新しい銀行を指すように銀行インデックス レジスタを更新します。 Bank Index Register は、BankRoutine のミニポート ドライバー維持されます。 正しいバンク インデックスは、メモリ マネージャーによってディスプレイ ドライバーに透過的に計算され、コールバックでミニポート ドライバーに渡され、BankRoutine をします。
必要条件
要件 | 価値 |
---|---|
サポートされる最小クライアント | Windows 2000 以降のバージョンの Windows オペレーティング システムで使用できます。 |
ターゲット プラットフォーム の | デスクトップ |
ヘッダー | video.h (Video.h を含む) |
ライブラリ | Videoprt.lib |
DLL | Videoprt.sys |
IRQL | PASSIVE_LEVEL |
関連項目
HwVidBankedMemoryCallback の
IOCTL_VIDEO_SHARE_VIDEO_MEMORY