次の方法で共有


IKsDataTypeHandler インターフェイス (ksproxy.h)

IKsDataTypeHandler インターフェイスは、メディア サンプルのオプションの前処理と後処理を実行するメソッドを提供します。 このインターフェイスは、処理に必要な余分なストリーム ヘッダー情報のサイズを返すこともできます。また、特定のメディアの種類が特定のカーネル ストリーミング データ範囲のセット内にあるかどうかを判断することもできます。

このインターフェイスの IID はIID_IKsDataTypeHandler。

継承

IKsDataTypeHandler インターフェイスは、IUnknown インターフェイスから継承されます。

メソッド

IKsDataTypeHandler インターフェイスには、これらのメソッドがあります。

 
IKsDataTypeHandler::KsCompleteIoOperation

KsCompleteIoOperation メソッドは、拡張ヘッダーをクリーンアップし、入出力 (I/O) 操作を完了します。
IKsDataTypeHandler::KsIsMediaTypeInRanges

KsIsMediaTypeInRanges メソッドは、メディアの種類が指定されたデータ範囲内にあることを検証します。
IKsDataTypeHandler::KsPrepareIoOperation

KsPrepareIoOperation メソッドは拡張ヘッダーを初期化し、I/O 操作用にメディア サンプルを準備します。
IKsDataTypeHandler::KsQueryExtendedSize

KsQueryExtendedSize メソッドは、入出力 (I/O) 操作に必要な拡張ヘッダー情報を取得します。
IKsDataTypeHandler::KsSetMediaType

KsSetMediaType メソッドは、データ型ハンドラーのメディアの種類を設定します。

注釈

プロキシ データ型をニュートラルに保つために、オプションのデータ型ハンドラーを読み込んで、カーネル モード フィルターに渡す、またはカーネル モード フィルターからデータ ストリームをマッサージできます。 データ型ハンドラーは、少なくとも IKsDataTypeHandler インターフェイスをサポートする COM サーバーとして実装する必要があります。 データ型ハンドラーは、必要に応じて IKsDataTypeCompletion インターフェイスを サポートできます。

通常、データ型ハンドラーはピン接続プロセス中に読み込まれ、接続が切断されるとアンロードされます。 ただし、データ型ハンドラーは、他の目的のために一時的に読み込まれる場合があります。 たとえば、アプリケーションで DirectShow の IAMStreamConfig::SetFormat メソッドを使用する場合、アプリケーションはデータ型ハンドラーを使用して、メソッドに送信される部分的なメディア型パラメーターを完了する可能性があります。

プロキシは、メディアの種類の GUID を COM サーバー クラスとして使用して、読み込むデータ型ハンドラーがあるかどうかを判断します。 データ型ハンドラーが、プロキシが検索する予想される GUID クラスの下で COM サーバーとして登録されている限り、データ型ハンドラーが読み込まれます。 メジャー形式の種類は、最初にデータ型ハンドラー COM サーバーを開こうとするために使用され、その後にサブタイプと書式指定子が続きます。データ型ハンドラーを開く際にメジャー形式の型を使用してエラーが発生した場合は、その後に書式指定子が続きます。 いずれかの試行が成功した場合、プロキシは IKsDataTypeHandler インターフェイスに対してクエリを実行し、インターフェイスの KsSetMediaType メソッドを呼び出して、ハンドラーが多くの型をサポートしている場合に備えて、ハンドラーで使用されている現在のメディアの種類を確立します。 ハンドラーが見つからない場合、ストリームをカーネル モードとマーシャリングするとき、または必要な他のタスクを実行する場合、プロキシは必要ないと見なします。

CoCreateInstance を介したデータ型ハンドラー作成要求では、サーバーには常に COM オブジェクトを作成するための外部 IUnknown が表示されます。 この IUnknown は、このハンドラーを読み込む pin オブジェクトのインターフェイスです。 IUnknown インターフェイス ポインターを使用して、IKsPin インターフェイスや IKsControl インターフェイスなどの情報またはインターフェイスのクエリを実行できます。ただし、カーネル モード のピンはハンドラーの読み込み時に作成されていない可能性があります。 インターフェイスを取得して外部オブジェクトに参照を残す必要はありません。これは、循環参照カウントが発生します。 外部オブジェクトがハンドラーを所有し、定義上、外部オブジェクトの参照カウントが 0 に達すると破棄されるため、参照カウントなしでインターフェイスを使用することは許容されます。

IAMStreamConfig::SetFormatCoCreateInstance の詳細については、Microsoft Windows SDKドキュメントを参照してください。

要件

要件
対象プラットフォーム Windows
ヘッダー ksproxy.h

こちらもご覧ください

IKsDataTypeCompletion