IUnknown を実装する方法

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

Microsoft DirectShow は、コンポーネント オブジェクト モデル (COM) に基づいています。 独自のフィルターを記述する場合は、COM オブジェクトとして実装する必要があります。 DirectShow 基本クラスは、これを行うフレームワークを提供します。 基底クラスを使用する必要はありませんが、開発プロセスを簡略化できます。 この記事では、COM オブジェクトの内部的な詳細と DirectShow 基本クラスでの実装について説明します。

この記事では、COM クライアント アプリケーションをプログラムする方法を理解していることを前提としています。つまり、 IUnknown のメソッドを理解していますが、COM オブジェクトの開発経験は想定していません。 DirectShow は、COM オブジェクトの開発に関する多くの詳細を処理します。 COM オブジェクトの開発経験がある場合は、「 CUnknown の基本クラスについて説明する CUnknown 使用」セクションを参照してください。

COM は仕様であり、実装ではありません。 コンポーネントが従う必要があるルールを定義します。これらのルールを有効にすることは開発者に委ねられます。 DirectShow では、すべてのオブジェクトは一連の C++ 基本クラスから派生します。 基底クラスのコンストラクターとメソッドは、一貫した参照カウントを維持するなど、COM の "簿記" 作業の大部分を行います。 基本クラスからフィルターを派生させることで、 クラスの機能を継承します。 基底クラスを効果的に使用するには、COM 仕様を実装する方法の一般的な理解が必要です。

この記事には、次のトピックが含まれています。

DirectShow と COM