IFilterMapper2::EnumMatchingFilters 方法 (strmif.h)

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 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

保留,必须为 0。

[in] bExactMatch

指示是否需要完全匹配的布尔值。 有关更多信息,请参见备注。

[in] dwMerit

最小优点值。 枚举排除具有较小优点值的筛选器。 有关优点值的列表,请参阅 Merit。 如果 dwMerit 高于 MERIT_DO_NOT_USE,则枚举还会排除其类别优点小于或等于MERIT_DO_NOT_USE的筛选器。 (请参阅 筛选器类别。)

[in] bInputNeeded

指示筛选器是否必须具有输入引脚的布尔值。 如果值为 TRUE,则筛选器必须至少有一个输入引脚。

[in] cInputTypes

pInputTypes 中指定的输入媒体类型数。

[in] pInputTypes

指向 GUID 对数组的指针,这些 GUID 对指定主要类型和子类型,以便输入引脚匹配。 数组的大小为 2 * cInputTypes。 数组可以为 NULL。 单个数组成员可以GUID_NULL,这与任何类型的匹配。 (请参阅 媒体类型。)

[in] pMedIn

指向指定输入引脚媒体的 REGPINMEDIUM 结构的指针。 如果不需要,则设置为 NULL

[in] pPinCategoryIn

指向指定输入引脚类别的 GUID 的指针。 (请参阅 固定属性 Set.) 设置为 NULL (如果不需要)。

[in] bRender

指定筛选器是否必须呈现其输入的布尔值。 如果 为 TRUE,则指定的筛选器必须呈现其输入。 (此值对应于 REGFILTERPINS 结构中的 bRendered 字段,该字段用于注册有关筛选器引脚的信息。)

[in] bOutputNeeded

指定筛选器是否必须具有输出引脚的布尔值。 如果 为 TRUE,则筛选器必须至少有一个输出引脚。

[in] cOutputTypes

pOutputTypes 中指定的输入媒体类型数。

[in] pOutputTypes

指向 GUID 对数组的指针,这些 GUID 对指定主要类型和子类型,以便输出引脚匹配。 数组的大小为 2 * cOutputTypes。 数组可以为 NULL。 单个数组成员可以GUID_NULL,这与任何类型的匹配。

[in] pMedOut

指向指定输出引脚媒体的 REGPINMEDIUM 结构的指针。 如果不需要,则设置为 NULL

[in] pPinCategoryOut

指向指定输出引脚类别的 GUID 的指针。 (请参阅 固定属性 Set.) 设置为 NULL (如果不需要)。

返回值

返回 HRESULT 值。 可能的值包括下表中显示的值。

返回代码 说明
S_OK
成功
E_FAIL
失败
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 参数中传递类似的数组,并在 cOutputTypes 参数中指定 GUID 对的数目。

如果 bExactMatch 参数的值为 TRUE,则此方法将查找与为媒体类型、引脚类别和固定介质指定的值完全匹配的筛选器。 如果值为 FALSE,则为其中任何项注册 NULL 值的筛选器被视为匹配项。 (实际上,注册表中的 NULL 值充当通配符.)

如果为媒体类型、引脚类别或固定介质指定 NULL ,则任何筛选器都被视为该参数的匹配项。

如果引脚未注册任何媒体类型,此方法不会将其视为媒体类型的匹配项。

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 strmif.h (包括 Dshow.h)
Library Strmiids.lib

另请参阅

错误和成功代码

IFilterMapper2 接口