IFilterGraph2::AddSourceFilterForMoniker 方法 (strmif.h)

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

方法 AddSourceFilterForMonikerIMoniker 指针创建源筛选器,并将筛选器添加到图中。 例如,可以获取系统设备(如视频捕获设备)的名字对象,并为该设备添加视频捕获筛选器。 (有关系统设备名字对象的详细信息,请参阅 ICreateDevEnum interface.)

语法

HRESULT AddSourceFilterForMoniker(
  [in]  IMoniker    *pMoniker,
  [in]  IBindCtx    *pCtx,
  [in]  LPCWSTR     lpcwstrFilterName,
  [out] IBaseFilter **ppFilter
);

参数

[in] pMoniker

指向 IMoniker 接口的 指针。

[in] pCtx

指向 IBindCtx 绑定上下文接口的指针。

[in] lpcwstrFilterName

筛选器的名称。

[out] ppFilter

接收指向源筛选器的 IBaseFilter 指针的指针。 调用方必须释放接口。

返回值

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

返回代码 说明
S_OK
成功。
VFW_S_DUPLICATE_NAME
成功;但指定的名称是重复的,因此 Filter Graph Manager 修改了该名称。
E_FAIL
失败。
E_OUTOFMEMORY
内存不足。
VFW_E_DUPLICATE_NAME
无法添加具有重复名称的筛选器。
VFW_E_CANNOT_LOAD_SOURCE_FILTER
无法加载 的源筛选器。
VFW_E_UNKNOWN_FILE_TYPE
无法识别此文件的媒体类型。

备注

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

示例

C++
IBaseFilter *pSource = NULL;IMoniker *pMoniker = NULL;

使用 IEnumMonikers 获取 IMoniker 指针。 (未显示。)

// Create a bind context for working with the moniker. IBindCtx pContext=0; hr = CreateBindCtx(0, &pContext); if (SUCCEEDED(hr)) { // Query the Filter Graph Manager for IFilterGraph2. IFilterGraph2 pFG2 = NULL; hr = pGraph->QueryInterface(IID_IFilterGraph2, (void)&pFG2); if (SUCCEEDED(hr)) { // Create the source filter. hr = pFG2->AddSourceFilterForMoniker(pMoniker, pContext, L"Source", &pSource); pFG2->Release(); } pContext->Release(); } pMoniker->Release();

要求

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

另请参阅

错误和成功代码

IFilterGraph2 接口