IFilterGraph::AddFilter 方法 (strmif.h)

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

方法 AddFilter 将筛选器添加到图中。

语法

HRESULT AddFilter(
  [in] IBaseFilter *pFilter,
  [in] LPCWSTR     pName
);

参数

[in] pFilter

指向要添加的筛选器的 IBaseFilter 接口的指针。

[in] pName

指向包含筛选器名称的宽字符字符串的指针。

返回值

返回 HRESULT 值。 可能的值包括以下值。

返回代码 说明
S_OK
成功。
VFW_S_DUPLICATE_NAME
已成功添加名称重复的筛选器。
E_FAIL
失败。
E_OUTOFMEMORY
内存不足。
E_POINTER
NULL 指针参数。
VFW_E_CERTIFICATION_FAILURE
此筛选器的使用受软件密钥的限制。
VFW_E_DUPLICATE_NAME
无法添加名称重复的筛选器。

备注

筛选器的名称可以为 NULL,在这种情况下,Filter Graph 管理器会生成一个名称。 如果名称不为 NULL 且不唯一,则此方法将修改名称,以尝试生成新的唯一名称。 如果成功,此方法将返回VFW_S_DUPLICATE_NAME。 如果无法生成唯一名称,则返回VFW_E_DUPLICATE_NAME。

AddFilter 调用筛选器的 IBaseFilter::JoinFilterGraph 方法以通知筛选器已添加它。 AddFilter 在尝试使用 IGraphBuilder::ConnectIFilterGraph::ConnectDirectIGraphBuilder::Render 方法连接或呈现属于所添加筛选器的引脚之前,必须调用 。

筛选器关系图管理器保留筛选器的引用计数,直到筛选器从图形中删除或释放 Filter Graph 管理器。

要求

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

另请参阅

错误和成功代码

IFilterGraph 接口