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


Метод IFilterMapper2::EnumMatchingFilters (strmif.h)

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

Метод EnumMatchingFilters перечисляет зарегистрированные фильтры, соответствующие указанным требованиям.

Синтаксис

HRESULT EnumMatchingFilters(
  [out] IEnumMoniker       **ppEnum,
  [in]  DWORD              dwFlags,
  [in]  BOOL               bExactMatch,
  [in]  DWORD              dwMerit,
  [in]  BOOL               bInputNeeded,
  [in]  DWORD              cInputTypes,
  [in]  const GUID         *pInputTypes,
  [in]  const REGPINMEDIUM *pMedIn,
  [in]  const CLSID        *pPinCategoryIn,
  [in]  BOOL               bRender,
  [in]  BOOL               bOutputNeeded,
  [in]  DWORD              cOutputTypes,
  [in]  const GUID         *pOutputTypes,
  [in]  const REGPINMEDIUM *pMedOut,
  [in]  const CLSID        *pPinCategoryOut
);

Параметры

[out] ppEnum

Получает указатель на интерфейс IEnumMoniker . Используйте этот указатель интерфейса для получения моникеров фильтра из перечисления . Вызывающий объект должен освободить интерфейс .

[in] dwFlags

Зарезервировано, должно быть равно нулю.

[in] bExactMatch

Логическое значение, указывающее, требуется ли точное соответствие. Дополнительные сведения см. в разделе "Примечания".

[in] dwMerit

Минимальное значение заслуг. Перечисление исключает фильтры с меньшим значением заслуг. Список значений заслуг см. в разделе Merit. Если значение dwMerit превышает MERIT_DO_NOT_USE, перечисление также исключает фильтры, категория которых имеет значение меньше или равно MERIT_DO_NOT_USE. (См . раздел Категории фильтров.)

[in] bInputNeeded

Логическое значение, указывающее, должен ли фильтр иметь входной контакт. Если значение равно TRUE, фильтр должен иметь по крайней мере один входной контакт.

[in] cInputTypes

Количество типов входных носителей, указанных в pInputTypes.

[in] pInputTypes

Указатель на массив пар GUID, определяющих основные типы и подтипы, для сопоставления входных контактов. Размер массива составляет 2 * cInputTypes. Массив может иметь значение NULL. Отдельные элементы массива могут быть GUID_NULL, которые соответствуют любому типу. (См. раздел Типы мультимедиа.)

[in] pMedIn

Указатель на структуру REGPINMEDIUM , указывающую среду для входных контактов. Если это не требуется, задайте значение NULL .

[in] pPinCategoryIn

Указатель на GUID, указывающий категорию входных контактов. (См . раздел Закрепление набора свойств.) Если это не требуется, задайте значение NULL .

[in] bRender

Логическое значение, указывающее, должен ли фильтр отображать входные данные. Если задано значение TRUE, указанный фильтр должен отображать свои входные данные. (Это значение соответствует полю bRendered в структуре REGFILTERPINS , которая используется для регистрации сведений о контактах фильтра.)

[in] bOutputNeeded

Логическое значение, указывающее, должен ли фильтр иметь выходную закрепку. Если задано значение TRUE, фильтр должен иметь по крайней мере один вывод.

[in] cOutputTypes

Количество типов входных носителей, указанных в pOutputTypes.

[in] pOutputTypes

Указатель на массив пар GUID, определяющих основные типы и подтипы, для сопоставления выходных контактов. Размер массива составляет 2 * cOutputTypes. Массив может иметь значение NULL. Отдельные элементы массива могут быть GUID_NULL, которые соответствуют любому типу.

[in] pMedOut

Указатель на структуру REGPINMEDIUM , указывающую среду для выходных контактов. Если это не требуется, задайте значение NULL .

[in] pPinCategoryOut

Указатель на GUID, указывающий выходную категорию контактов. (См . раздел Закрепление набора свойств.) Если это не требуется, задайте значение NULL .

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

Возвращает значение HRESULT . Возможные значения включают значения, показанные в следующей таблице.

Код возврата Описание
S_OK
Успешное завершение
E_FAIL
Failure
E_OUTOFMEMORY
Недостаточно памяти
E_POINTER
Аргумент указателя NULL

Комментарии

Чтобы найти фильтры, входные контакты которых соответствуют заданному набору типов мультимедиа, объявите массив с GUID основного типа и идентификаторами GUID подтипа, упорядоченными по парам. Передайте адрес массива в параметре pInputTypes и задайте параметр cInputTypes равным количеству пар (то есть половине размера массива):

C++
GUID arrayInTypes[2]; arrayInTypes[0] = MEDIATYPE_Video; arrayInTypes[1] = GUID_NULL;

DWORD cInTypes = 1;

Для выходных контактов передайте аналогичный массив в параметре pOutputTypes и укажите количество пар GUID в параметре cOutputTypes .

Если значение параметра bExactMatch равно TRUE, этот метод ищет фильтры, которые точно соответствуют значениям, указанным для типа носителя, категории закрепления и среды закрепления. Если значение равно FALSE, фильтры, регистрирующие значение NULL для любого из этих элементов, считаются совпадением. (Фактически значение NULL в реестре выступает в качестве подстановочного знака.)

Если для типа носителя, категории контактов или среды закрепления задано ЗНАЧЕНИЕ NULL , любой фильтр считается соответствующим для этого параметра.

Если закрепление не зарегистрировал типы носителей, этот метод не будет считать его соответствующим типом носителя.

Требования

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

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

Коды ошибок и успешного выполнения

Интерфейс IFilterMapper2