IFilterMapper2::EnumMatchingFilters 方法 (strmif.h)
[与此页面关联的功能 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 |