Метод 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 |