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::SetFormat と CoCreateInstance の詳細については、Microsoft Windows SDK のドキュメントを参照してください。
必要条件
| 要件 | 価値 |
|---|---|
| ターゲット プラットフォーム の | ウィンドウズ |
| ヘッダー | ksproxy.h |