Поделиться через


Объявление шаблона фабрики

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

Следующим шагом является объявление шаблона фабрики для фильтра. Шаблон фабрики — это класс C++, содержащий сведения о фабрике класса. В библиотеке DLL объявите глобальный массив объектов CFactoryTemplate , по одному для каждого фильтра или com-компонента в библиотеке DLL. Массив должен иметь имя g_Templates. Дополнительные сведения о шаблонах фабрик см. в разделе How to Create a DirectShow Filter 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