Метод ICaptureGraphBuilder2::FindInterface (strmif.h)
[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует, чтобы новый код использовал MediaPlayer, IMFMediaEngine и аудио- и видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, использующий устаревшие API, чтобы по возможности использовать новые API.]
Метод FindInterface
выполняет поиск указанного интерфейса в графе, начиная с указанного фильтра. Вы можете ограничить поиск разделом графа, вышестоящий или нижестоящего фильтра, или ограничить его определенной категорией контактов или типом мультимедиа.
Синтаксис
HRESULT FindInterface(
[in] const GUID *pCategory,
[in] const GUID *pType,
[in] IBaseFilter *pf,
[in] REFIID riid,
[out] void **ppint
);
Параметры
[in] pCategory
Указатель на GUID, указывающий условия поиска. Дополнительные сведения см. в разделе "Примечания". Возможны следующие значения:
- &LOOK_UPSTREAM_ONLY.
- &LOOK_DOWNSTREAM_ONLY.
- Одна из категорий контактов, перечисленных в разделе Набор свойств закрепления.
- NULL
[in] pType
Указатель на GUID, указывающий основной тип носителя выходного закрепления или ЗНАЧЕНИЕ NULL.
[in] pf
Указатель на интерфейс IBaseFilter фильтра. Метод начинает поиск из этого фильтра.
[in] riid
Идентификатор интерфейса (IID) искать интерфейс.
[out] ppint
Адрес переменной, получающей указатель интерфейса. Не забудьте освободить полученный указатель интерфейса после завершения работы с интерфейсом.
Возвращаемое значение
Возвращает значение HRESULT . Ниже приведены возможные значения.
Код возврата | Описание |
---|---|
|
Успешно. |
|
Ошибка. |
|
Такой интерфейс не поддерживается. |
|
Аргумент указателя NULL. |
Комментарии
В графе захвата различные фильтры и контакты могут предоставлять интерфейсы для настройки свойств, таких как параметры сжатия (IAMVideoCompression) или форматы потоков (IAMStreamConfig). В зависимости от устройства захвата другие полезные интерфейсы могут включать IAMCrossbar, который направляет аналоговые сигналы, или IAMTVTuner, который управляет устройством ТВ-тюнера. Этот метод можно использовать для поиска интерфейса без написания специального кода, который проходит по графу.
- Фильтр
- Контакты фильтра
- Все подчиненные фильтры, включая их контакты
- Все фильтры вышестоящий, включая их контакты
- Если pCategory равно &LOOK_UPSTREAM_ONLY, поиск начинается с входных контактов фильтра и продолжается вышестоящий. Он не включает фильтр или что-либо нижестоящее из фильтра. Параметр pType игнорируется.
- Если pCategory равно &LOOK_DOWNSTREAM_ONLY, поиск начинается с выходных контактов фильтра и продолжается ниже. Он не включает фильтр или что-либо вышестоящий из фильтра. Параметр pType игнорируется.
- Если pCategory указывает категорию контактов, нижестоящая часть поиска ограничена выходными контактами фильтра, которые соответствуют как категории контактов, так и типу носителя, заданному в параметре pType . В этом случае метод также выполняет поиск в фильтре, и все вышестоящий из фильтра.
Категории закрепления полезны для поиска интерфейсов закрепления в фильтрах захвата. Например, фильтр записи может иметь отдельные контакты для записи и предварительного просмотра. Если вы указываете категорию контактов, необходимо также указать тип носителя, чтобы убедиться, что метод выбирает правильный фильтр и закрепление.
Некоторые фильтры захвата видео имеют закрепление видеопорта (PIN_CATEGORY_VIDEOPORT) вместо предварительного просмотра. Если указать PIN_CATEGORY_PREVIEW и MEDIATYPE_Video, метод обрабатывает все контакты видеопорта как контакты предварительного просмотра. Приложению не нужно тестировать эту возможность.
Поддержка фильтров. Если устройство захвата использует драйвер windows Driver Model (WDM), графу могут потребоваться определенные фильтры, вышестоящий из фильтра видеозахвата WDM, например фильтр ТВ-тюнера или аналоговый фильтр видеоперекладки. Если параметр pCategory не равен NULL, этот метод автоматически вставляет все необходимые фильтры WDM в граф. Для этого он запрашивает входные контакты в фильтре захвата, чтобы определить, какие среды они поддерживают, и подключает их к соответствующим фильтрам. Если параметр pCategory имеет значение NULL, метод не добавляет фильтры вышестоящий.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера | Windows 2000 Server [только классические приложения] |
Целевая платформа | Windows |
Header | strmif.h (включая Dshow.h) |
Библиотека | Strmiids.lib |