PFNKSPINSETDATAFORMAT コールバック関数 (ks.h)

AVStream ミニドライバーの AVStrMiniPinSetDataFormat ルーチンは、ピンの作成時に呼び出され、以前に合意したデータ形式がこの KSPIN 構造体に対して許容され、この KSDATARANGE 構造体と一致することを確認します。 このルーチンは、特定の種類の動的な形式の変更 ( KSPROPERTY_CONNECTION_PROPOSEDATAFORMAT プロパティ要求の受け入れなど) によって呼び出されます。

構文

PFNKSPINSETDATAFORMAT Pfnkspinsetdataformat;

NTSTATUS Pfnkspinsetdataformat(
  [in]           PKSPIN Pin,
  [in, optional] PKSDATAFORMAT OldFormat,
  [in, optional] PKSMULTIPLE_ITEM OldAttributeList,
  [in]           const KSDATARANGE *DataRange,
  [in, optional] const KSATTRIBUTE_LIST *AttributeRange
)
{...}

パラメーター

[in] Pin

データ形式が変更される KSPIN 構造体へのポインター。

[in, optional] OldFormat

省略可能。 KSDATAFORMAT 構造体へのポインター。 ミニドライバーは、このフィールドを使用して、ピンがこの呼び出しの前に使用していたデータ形式を決定できます。 NULL の場合、 は、ピンにデータ形式が設定されておらず、Pin の作成ディスパッチがまだ行われていないことを示します。 ここで NULL 値は、このルーチンがフォーマット検証のために初期化時に呼び出されたことを示します。

[in, optional] OldAttributeList

省略可能。 前の形式の属性を格納する KSMULTIPLE_ITEM 構造体へのポインター。

[in] DataRange

KSDATARANGE 構造体へのポインター。 新しい形式のデータ範囲。

[in, optional] AttributeRange

省略可能。 新しい形式の属性範囲。

戻り値

PinConnectionFormat メンバーがこのルーチンに渡された範囲と一致する場合は、STATUS_SUCCESSを返します。 ConnectionFormat が渡された範囲と一致せず、ミニドライバーが別の範囲との一致を引き続き検索する場合は、STATUS_NO_MATCHを返します。 ConnectionFormat が渡された範囲と一致せず、ミニドライバーが別の範囲との一致を引き続き検索しようとしない場合は、選択したエラー コードを返します。 STATUS_PENDINGを返さないでください。

注釈

リング 3 グラフでは、カーネル ストリーミング プロキシ モジュール (KsProxy) は、合意された接続形式または動的形式の変更に基づいてデータ形式を設定します。 KsProxy は KSPROPERTY_CONNECTION_DATAFORMAT 要求を発行します。この要求は、最初の検証の後、ミニドライバーへのこのディスパッチ呼び出しに変換されます。 カーネル ストリーミング プロキシに関するページを参照してください。 詳細については、「 KS データ形式とデータ範囲」およびAVStream の DataRange 交差」を参照してください。

ミニドライバーは、そのKSPIN_DISPATCH構造体の SetDataFormat メンバーの AVStrMiniPinSetDataFormat のアドレスを指定します。

このルーチンは、ピンが IRP_MJ_CREATEを受け取る前に呼び出すことができます。この状況に対処するにはミニドライバーを準備する必要があります。

OldFormatOldAttributeListAttributeRange はすべて省略可能なパラメーターであり、 NULL にすることができます

このルーチンは省略可能です。

要件

要件
サポートされている最小のクライアント Microsoft Windows XP 以降のオペレーティング システムと DirectX 8.0 以降の DirectX バージョンで使用できます。
対象プラットフォーム デスクトップ
Header ks.h (Ks.h を含む)
IRQL PASSIVE_LEVEL

こちらもご覧ください

IRP_MJ_CREATE

KSDATAFORMAT

KSDATARANGE

KSMULTIPLE_ITEM

KSPIN

KSPIN_DISPATCH