声明工厂模板

[与此页面关联的功能 DirectShow 是一项旧功能。 它已被 MediaPlayerIMFMediaEngine媒体基金会中的音频/视频捕获取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能使用 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 API 的现有代码以使用新 API。]

下一步是声明筛选器的工厂模板。 工厂模板是包含类工厂信息的 C++ 类。 在 DLL 中,声明 CFactoryTemplate 对象的全局数组,每个筛选器或 DLL 中的 COM 组件对应一个。 数组必须 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 筛选器