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


Метод IBaseFilter::JoinFilterGraph (strmif.h)

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

Метод JoinFilterGraph уведомляет фильтр о том, что он присоединился к графу фильтра или покинул его.

Синтаксис

HRESULT JoinFilterGraph(
  [in] IFilterGraph *pGraph,
  [in] LPCWSTR      pName
);

Параметры

[in] pGraph

Указатель на интерфейс IFilterGraph диспетчера фильтров графов или значение NULL , если фильтр покидает граф.

[in] pName

Указатель на строку расширенных символов, указывающую имя фильтра.

Возвращаемое значение

Возвращает S_OK в случае успешного выполнения или значение HRESULT , указывающее причину ошибки.

Комментарии

Когда диспетчер фильтров графов добавляет фильтр к графу фильтра, он вызывает этот метод с указателем на себя. Он присваивает имя этому экземпляру фильтра с помощью параметра pName . Имя можно получить, вызвав метод IBaseFilter::QueryFilterInfo .

Когда диспетчер фильтров графов удаляет фильтр из графа, он вызывает этот метод с указателем NULL .

Приложения никогда не должны вызывать этот метод. Чтобы добавить фильтр к графу, вызовите метод IFilterGraph::AddFilter в диспетчере графов фильтров.

Разработчики фильтров. Фильтр может хранить указатель интерфейса IFilterGraph и запрашивать у него другие интерфейсы диспетчера фильтров Graph. Однако он никогда не должен содержать счетчик ссылок в диспетчере фильтров графов. При этом создается циклическое число ссылок, так как диспетчер графа фильтров сохраняет счетчик ссылок в фильтре. Число циклических ссылок предотвращает правильное освобождение интерфейса, что может привести к взаимоблокировкам. Интерфейс IFilterGraph гарантированно будет действителен до тех пор, пока диспетчер фильтров графов снова не вызовет этот метод со значением NULL. Реализацию этого метода см. в описании метода CBaseFilter::JoinFilterGraph .

Требования

Требование Значение
Минимальная версия клиента Windows 2000 Professional [только классические приложения]
Минимальная версия сервера Windows 2000 Server [только классические приложения]
Целевая платформа Windows
Header strmif.h (включая Dshow.h)
Библиотека Strmiids.lib

См. также раздел

Коды ошибок и успешности

Интерфейс IBaseFilter