PMINIPORT_QUERY_DEVICE_ROUTINE コールバック関数 (video.h)

HwVidQueryDeviceCallback は、指定された構成データを使用してそのアダプターを構成し、場合によっては、不足している構成情報を VIDEO_PORT_CONFIG_INFO 構造体に入力します。

構文

PMINIPORT_QUERY_DEVICE_ROUTINE PminiportQueryDeviceRoutine;

VP_STATUS PminiportQueryDeviceRoutine(
  PVOID HwDeviceExtension,
  PVOID Context,
  VIDEO_DEVICE_DATA_TYPE DeviceDataType,
  PVOID Identifier,
  ULONG IdentiferLength,
  PVOID ConfigurationData,
  ULONG ConfigurationDataLength,
  PVOID ComponentInformation,
  ULONG ComponentInformationLength
)
{...}

パラメーター

HwDeviceExtension

ミニポート ドライバーのアダプターごとの記憶域へのポインター。 詳細については、「 デバイス拡張機能」を参照してください。

Context

HwVidFindAdapter によって設定されたコンテキスト値へのポインター。 通常、VIDEO_PORT_CONFIG_INFO バッファーまたはそのバッファー内のオフセットを指します。

DeviceDataType

要求された構成情報の種類を指定します。これは次のいずれかです。

VpBusData

VpCmosData

VpControllerData

VpMachineData

VpMonitorData

x86 タイプのビデオ アダプターのミニポート ドライバーでは、通常、特に EISA バス上のアダプターに 対して VpBusData が指定されます。 VpControllerDataVpMonitorData の値は、ARC 準拠プラットフォームでのみ意味があります。 VpCmosDataVpMachineData の値はほとんど使用しません。

Identifier

ARC ファームウェアによって決定されるデバイスの名前へのポインター。 このパラメーターは、ARC 準拠のプラットフォームでのみ使用する必要があります。 それ以外の場合、このポインターは NULL である必要があります。

IdentiferLength

バッファー内の 識別子 文字列のサイズをバイト単位で指定します マシンが ARC に準拠していない場合は、値を 0 にする必要があります。

ConfigurationData

ハードウェア構成データへのポインター。 このデータの形式は、指定した DeviceDataType と、VIDEO_PORT_CONFIG_INFOの AdapterInterfaceType 値によって決まります。

ConfigurationDataLength

ConfigurationData バッファーのサイズをバイト単位で指定します。 実際には、レジストリから収集され、VideoPortGetDeviceBase によって割り当てられた ConfigurationData バッファーに格納された情報の量を示します。

ComponentInformation

システムで使用するために予約されています。

ComponentInformationLength

システムで使用するために予約されています。

戻り値

HwVidQueryDeviceCallback は、操作の状態を返します。

注釈

HwVidQueryDeviceCallback は、ミニポート ドライバーの HwVidFindAdapter 関数から VideoPortGetDeviceData の呼び出しで渡されます。 VideoPortGetDeviceData は、レジストリの \Registry\Machine\Hardware\Description ノードで使用可能な構成情報を収集した後、HwVidQueryDeviceCallback を呼び出します。

HwVidQueryDeviceCallback は、VideoPortGetDeviceData によってレジストリから収集された ConfigurationData を調べます。 この情報を使用してアダプターを構成し、場合によっては、不足している構成情報を VIDEO_PORT_CONFIG_INFO 構造体に入力します。

HwVidQueryDeviceCallback、ConfigurationData で見つかったアクセス範囲の値を VideoPortRead Xxx または VideoPortWriteXxx に直接渡すことはできません。このようなアドレスは、まず VideoPortGetDeviceBase を呼び出してマップする必要があります。

ConfigurationData バッファーにアクセス範囲情報がなく、ミニポート ドライバーの HwVidFindAdapter 関数がまだ VideoPortGetBusData (または VideoPortGetAccessRanges) を呼び出していない場合、その HwVidQueryDeviceCallback 関数は VideoPortGetBusData を呼び出すことができます。 VideoPortGetBusData によって返されるアクセス範囲情報も VideoPortVerifyAccessRanges に渡す必要があります。

VideoPortVerifyAccessRanges がNO_ERRORを返す場合、ミニポート ドライバーは VideoPortGetDeviceBase を呼び出して、VideoPortReadXxx 関数または VideoPortWriteXxx 関数を呼び出すことによってアダプターとの通信に使用できるマップされた論理アドレスを取得できます。

VideoPortGetDeviceData、VideoPortGetBusData、または VideoPortGetAccessRanges を呼び出してバス相対アクセス範囲の値を取得できない場合、ミニポート ドライバーはドライバーが提供する一連の既定のアクセス範囲値を使用してそのアダプターを検索できます。 このような状況では、ミニポート ドライバーは、ミニポート ドライバーが提供するアクセス範囲で VideoPortVerifyAccessRanges を呼び出す必要がありますし、VideoPortVerifyAccessRanges がNO_ERROR返された場合にのみ VideoPortGetDeviceBase を呼び出します。 VideoPortVerifyAccessRanges の呼び出しが失敗した場合、特定のバス相対範囲が別のデバイスのドライバーによって既に使用されています。

HwVidQueryDeviceCallback をページング可能にする必要があります。

要件

要件
対象プラットフォーム デスクトップ
Header video.h (Video.h を含む)

こちらもご覧ください

VideoPortGetAccessRanges

VideoPortGetBusData

VideoPortGetDeviceBase

VideoPortGetDeviceData

VideoPortVerifyAccessRanges