IFilterGraph2::AddSourceFilterForMoniker 方法 (strmif.h)

[與此頁面相關的功能 DirectShow是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對Windows 10和Windows 11進行優化。 Microsoft 強烈建議新程式碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 DirectShow。 Microsoft 建議使用舊版 API 的現有程式碼盡可能重寫為使用新的 API。

方法 AddSourceFilterForMoniker 會從 IMoniker 指標建立來源篩選,並將篩選新增至圖形。 例如,您可以取得系統裝置的 Moniker,例如視訊擷取裝置,並新增該裝置的視訊擷取篩選。 (如需系統裝置 Monikers 的詳細資訊,請參閱 ICreateDevEnum 介面.)

語法

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
無法辨識此檔案的媒體類型。

備註

Filter Graph Manager 會保留篩選的參考計數,直到從圖形中移除篩選或篩選圖形管理員釋放為止。

範例

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 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 strmif.h (包含 Dshow.h)
程式庫 Strmiids.lib

另請參閱

錯誤和成功碼

IFilterGraph2 介面