次の方法で共有


ファクトリ テンプレートの宣言

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

次の手順では、フィルターのファクトリ テンプレートを宣言します。 ファクトリ テンプレートは、クラス ファクトリの情報を含む C++ クラスです。 DLL で、DLL 内のフィルターまたは COM コンポーネントごとに 1 つずつ、 CFactoryTemplate オブジェクトのグローバル配列を宣言します。 配列には 、g_Templatesという名前を付ける必要があります。 ファクトリ テンプレートの詳細については、「 DirectShow フィルター DLL を作成する方法」を参照してください。

ファクトリ テンプレートの m_pAMovieSetup_Filter メンバーは、前に説明した AMOVIESETUP_FILTER 構造体へのポインターです。 次の例は、前の例で示した構造を使用したファクトリ テンプレートを示しています。

CFactoryTemplate g_Templates[] = {
    {
        g_wszName,                      // Name.
        &CLSID_SomeFilter,              // CLSID.
        CSomeFilter::CreateInstance,    // Creation function.
        NULL,
        &sudFilterReg                   // Pointer to filter information.
    }
};
int g_cTemplates = sizeof(g_Templates) / sizeof(g_Templates[0]);

フィルター情報を宣言しなかった場合、m_pAMoveSetup_Filterは NULL にすることができます

DirectShow フィルターを登録する方法