[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayer、 IMFMediaEngine 和 Media Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayer、 IMFMediaEngine 和 音频/视频捕获 ,而不是 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 值。 可能的值包括下表中显示的值。
| 返回代码 | 说明 | 
|---|---|
  | 
成功 | 
  | 
失败 | 
  | 
内存不足 | 
  | 
NULL 指针参数 | 
注解
若要查找其输入引脚与一组给定媒体类型匹配的筛选器,请声明一个数组,其中包含按成对排序的主要类型 GUID 和子类型 GUID。 在 pInputTypes 参数中传递数组地址,并将 cInputTypes 参数设置为等于 (对数,即数组大小的一半) :
| C++ | 
|---|
GUID arrayInTypes[2];arrayInTypes[0] = MEDIATYPE_Video;arrayInTypes[1] = GUID_NULL;  | 
如果 bExactMatch 参数的值为 TRUE,则此方法将查找与为媒体类型、引脚类别和固定介质指定的值完全匹配的筛选器。 如果值为 FALSE,则为其中任何项注册 NULL 值的筛选器被视为匹配项。 (实际上,注册表中的 NULL 值充当通配符.)
如果为媒体类型、引脚类别或固定介质指定 NULL ,则任何筛选器都被视为该参数的匹配项。
如果引脚未注册任何媒体类型,此方法不会将其视为媒体类型的匹配项。
要求
| 要求 | 值 | 
|---|---|
| 最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] | 
| 最低受支持的服务器 | Windows 2000 Server [仅限桌面应用] | 
| 目标平台 | Windows | 
| 标头 | strmif.h (包括 Dshow.h) | 
| Library | Strmiids.lib |