次の方法で共有


プル モデル

IMemInputPin インターフェイスで、アップストリーム フィルタは送信するデータを判別し、データをダウンストリーム フィルタにプッシュする。フィルタによっては、"プル" モデルのほうが適している。このモデルでは、ダウンストリーム フィルタがアップストリーム フィルタにデータを要求する。この場合も、サンプルは、出力ピンから入力ピンへとダウンストリーム方向に移動するが、ダウンストリーム フィルタがデータ フローを開始する。このタイプの接続では、IAsyncReader インターフェイスを使う。

プル モデルの一般的な用途はファイルの再生である。たとえば、AVI 再生グラフでは、ファイル ソース (非同期) フィルタは一般的なファイル読み取り操作を実行し、データをフォーマット情報を持たないバイト ストリームとして送信する。AVI スプリッタ フィルタは、AVI ヘッダーを読み取り、ストリームを解析してビデオ サンプルとオーディオ サンプルにする。AVI スプリッタは非同期ファイル ソース フィルタに比べて、必要なデータを特定できるので、IMemInputPin の代わりに IAsyncReader を使う。

出力ピンにデータを要求するために、入力ピンは次のいずれかのメソッドを呼び出す。

最初のメソッドは非同期的で、複数のオーバーラップした読み取りをサポートする。他のメソッドは同期的である。

理論的には任意のフィルタで IAsyncReader をサポートできるが、現実的にはパーサー フィルタに接続するソース フィルタ用に設計されている。パーサーは、プッシュ モデルでのソース フィルタとよく似た動作をする。ポーズ状態のパーサーは、IAsyncReader 接続からデータをプルし、そのデータをダウンストリームにプッシュするストリーミング スレッドを作成する。出力ピンは IMemInputPin を使い、グラフの残りの部分は標準的なプッシュ モデルを使う。