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
省略可能。 新しい形式の属性範囲。
戻り値
Pin の ConnectionFormat メンバーがこのルーチンに渡された範囲と一致する場合は、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を受け取る前に呼び出すことができます。この状況に対処するにはミニドライバーを準備する必要があります。
OldFormat、 OldAttributeList、 AttributeRange はすべて省略可能なパラメーターであり、 NULL にすることができます。
このルーチンは省略可能です。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Microsoft Windows XP 以降のオペレーティング システムと DirectX 8.0 以降の DirectX バージョンで使用できます。 |
対象プラットフォーム | デスクトップ |
Header | ks.h (Ks.h を含む) |
IRQL | PASSIVE_LEVEL |