VideoPortGetDeviceBase 関数 (video.h)

VideoPortGetDeviceBase 関数は、バス相対デバイス メモリまたは I/O アドレスの範囲をシステム空間にマップします。

構文

VIDEOPORT_DEPRECATED VIDEOPORT_API PVOID VideoPortGetDeviceBase(
  PVOID            HwDeviceExtension,
  PHYSICAL_ADDRESS IoAddress,
  ULONG            NumberOfUchars,
  UCHAR            InIoSpace
);

パラメーター

HwDeviceExtension

ミニポート ドライバーのデバイス拡張機能へのポインター。

IoAddress

マップする範囲の基本物理アドレス。 このバス相対値を取得するには、 VideoPortGetDeviceDataVideoPortGetRegistryParameters、または VideoPortGetAccessRanges を呼び出します。 それ以外の場合、この値は、デバイス メモリまたは I/O ポートのドライバー指定の既定のベース アドレスです。

VideoPortVerifyAccessRanges または VideoPortGetAccessRanges の前の呼び出しによって、レジストリ内の IoAddressNumberOfUchars によって記述された範囲が正常に要求されている必要があります。

NumberOfUchars

マップする IoAddress から始まるバイト数。

InIoSpace

IoAddress 範囲の場所。 このパラメーターには、次のいずれかのフラグ、またはこれらのフラグの互換性のある ORed の組み合わせを指定できます。

フラグ 意味
VIDEO_MEMORY_SPACE_DENSE 互換性のために残されています。
VIDEO_MEMORY_SPACE_IO アドレス範囲は、メモリ空間ではなく、I/O 領域にあります。
VIDEO_MEMORY_SPACE_MEMORY アドレス範囲は、I/O 空間ではなくメモリ領域にあります。
VIDEO_MEMORY_SPACE_P6CACHE プロセッサは、一連の書き込み操作を集計し、キャッシュ行に送信し、後でキャッシュをフラッシュします。 このフラグは、VIDEO_MEMORY_SPACE_IOが設定されていない場合にのみ意味があります。 ビデオ メモリを書き込み結合 (WC) として指定します。 WC キャッシュの詳細については、 ビデオ ミニポート ドライバーでのメモリの書き込みの組み合わせ に関する Web サイトの記事を参照してください。

戻り値

成功した場合、 VideoPortGetDeviceBase はマッピングの基本仮想アドレスを返します。 指定したバス相対範囲をマップできない場合、 VideoPortGetDeviceBaseNULL を返します。

注釈

VideoPortMapMemory 関数と VideoPortUnmapMemory 関数を除き、マップされた仮想アドレスを VideoPortReadXxxVideoPortWriteXxxVideoPort Xxx Memory 関数に渡すことができます。

ミニポート ドライバーの HwVidFindAdapterHwVidQueryDeviceCallback、または HwVidQueryNamedValueCallback 関数から VideoPortGetDeviceBase を呼び出す必要があります。

HwVidFindAdapter が制御を返す前に、後で使用するために、VideoPortGetDeviceBase によって返されるマップされたベース アドレスと、アダプターのデバイス拡張機能 (HwDeviceExtension によって指される) のマップされたアクセス範囲の長さの両方を格納する必要があります。

マップされたアドレス空間へのアクセスは、次の規則に従う必要があります。

  • アドレスが I/O 空間にあることを示す InIoSpace がVIDEO_MEMORY_SPACE_IOの場合、この関数が返す仮想アドレスは、VideoPortReadPort Xxx、VideoPortWritePortXxxVideoPortReadPortBuffer Xxx、VideoPortWritePortBufferXxx 関数 (XxxUcharUshort、または Ulong) に渡す必要があります。
  • アドレスが I/O 空間ではなくメモリ空間にあることを示す InIoSpace がVIDEO_MEMORY_SPACE_MEMORYの場合、この関数が返す仮想アドレスは、VideoPortReadRegister Xxx、VideoPortWriteRegisterXxxVideoPortReadRegisterBuffer Xxx、VideoPortWriteRegisterBufferXxx 関数 (XxxUcharUshort、または Ulong) に渡す必要があります。
  • ドライバーは、 NumberOfUchars で区切られた範囲外のアドレスにアクセスすることはできません。
VideoPortGetDeviceBaseVideoPortMapMemory の両方をビデオ ミニポート ドライバーによって呼び出して、ビデオ メモリを仮想アドレス空間にマップできます。 これらの両方の関数を呼び出して同じ物理アドレスをマップする場合、または 1 つの関数を複数回呼び出して同じ物理アドレスをマップする場合は、同じ物理アドレス範囲にマップされる仮想アドレス範囲が複数存在する可能性があります。 その場合は、 InIoSpace パラメーターのVIDEO_MEMORY_SPACE_P6CACHE フラグを、すべての呼び出しで同じ値に設定する必要があります。

すべてのユニバーサル メモリ アーキテクチャ (UMA) ディスプレイ デバイスは、PCI バスではなく、メイン メモリ内にあるフレーム バッファーを使用します。 この場合、 VideoPortMapMemory を呼び出してフレーム バッファーをマップしないでください。 UMA フレーム バッファーをシステム空間にマップするには、 MmMapIoSpace を呼び出します。

ミニポート ドライバーが論理範囲をマップしたアダプターをサポートしていない場合は、 DriverEntry 関数に制御を返す前に 2 つの手順を実行する必要があります。 VideoPortFreeDeviceBase を呼び出して、以前にマップされた範囲をシステム領域からマップ解除し、 VideoPortGetAccessRanges または VideoPortVerifyAccessRanges を呼び出して、レジストリ内の範囲に対する要求を解放します。

要件

要件
サポートされている最小のクライアント Windows 2000 以降のバージョンの Windows オペレーティング システムで使用できます。
対象プラットフォーム デスクトップ
Header video.h (Video.h を含む)
Library Videoprt.lib
[DLL] Videoprt.sys
IRQL PASSIVE_LEVEL

こちらもご覧ください

HwVidFindAdapter

HwVidQueryDeviceCallback

HwVidQueryNamedValueCallback

VideoPortCompareMemory

VideoPortFreeDeviceBase

VideoPortGetAccessRanges

VideoPortGetDeviceData

VideoPortGetRegistryParameters

VideoPortMoveMemory

VideoPortVerifyAccessRanges

VideoPortZeroDeviceMemory

VideoPortZeroMemory