次の方法で共有


IUnknown の実装方法

Microsoft DirectShow は、Component Object Model (COM) に基づいている。自分でフィルタを書く場合は、フィルタを COM オブジェクトとして実装しなければならない。DirectShow の基底クラスは、このような作業を行うためのフレームワークを提供する。基底クラスを使う必然性はないが、基底クラスを使えば開発プロセスを簡略化できる。ここでは、COM オブジェクトの内部的な動作と、DirectShow 基底クラスでの COM オブジェクトの実装について説明する。

このトピックは、COM クライアント アプリケーションのプログラミングを理解している、すなわち、IUnknown のメソッドを理解しているユーザーを対象にしているが、COM オブジェクトの開発経験があるユーザーを前提とするものではない。DirectShow は、COM オブジェクトの開発に関する多くを扱う。COM オブジェクトの開発経験があるユーザーは、CUnknown 基底クラスを解説している「CUnknown の使用」を読むこと。

COM は実装ではなく仕様である。COM は、コンポーネントが従うべき規則を定義する。規則を実際に適用するのは開発者の役目である。DirectShow では、すべてのオブジェクトは C++ の基底クラスから派生する。基底クラス コンストラクタおよびメソッドは、一貫した参照カウントの保持などの COM "定番処理" 処理のほとんどを行う。フィルタを基底クラスから派生させることによって、そのクラスの機能を継承できる。基底クラスを効果的に使うためには、COM 仕様がどのようにクラスに実装されているかを理解する必要がある。

ここでは次の内容について説明する。