IFilterMapper2::EnumMatchingFilters 方法 (strmif.h)

[與此頁面相關的功能 DirectShow 是舊版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音訊/視訊擷取取代。 這些功能已針對 Windows 10 和 Windows 11 進行優化。 Microsoft 強烈建議新程式代碼盡可能使用 MediaPlayerIMFMediaEngine音訊/視訊擷取 ,而不是 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 介面的指標。 使用此介面指標可從列舉中擷取篩選 Monikers。 呼叫端必須釋放 介面。

[in] dwFlags

保留的 必須是零。

[in] bExactMatch

布爾值,指出是否需要完全相符專案。 如需詳細資訊,請參閱「備註」。

[in] dwMerit

最低價值。 列舉會排除具有較少優點值的篩選。 如需優點值的清單,請參閱 優點。 如果 dwMerit 高於 MERIT_DO_NOT_USE,列舉也會排除類別的篩選條件小於或等於MERIT_DO_NOT_USE。 (請參閱 篩選類別.)

[in] bInputNeeded

布爾值,指出篩選條件是否必須有輸入針腳。 如果值為 TRUE,篩選條件必須至少有一個輸入針腳。

[in] cInputTypes

pInputTypes 中指定的輸入媒體類型數目。

[in] pInputTypes

指定主要類型和子類型的 GUID 組陣列指標,輸入針腳要相符。 陣列的大小為 2 * cInputTypes。 陣列可以是 NULL。 個別陣列成員可以GUID_NULL,其符合任何類型。 (請參閱 媒體類型.)

[in] pMedIn

REGPINMEDIUM 結構的指標,指定輸入針腳的媒體。 如有需要,請將 設定為 NULL

[in] pPinCategoryIn

指定輸入針腳類別目錄之 GUID 的指標。 (請參閱 Pin 屬性 Set.) 視需要設定為 NULL

[in] bRender

布爾值,指定篩選條件是否必須轉譯其輸入。 如果 為 TRUE,則指定的篩選條件必須轉譯其輸入。 (這個值會對應至 REGFILTERPINS 結構中的 bRendered 欄位,用來註冊篩選的 pins.)

[in] bOutputNeeded

布爾值,指定篩選條件是否必須有輸出針腳。 如果 為 TRUE,篩選條件必須至少有一個輸出針腳。

[in] cOutputTypes

pOutputTypes 中指定的輸入媒體類型數目。

[in] pOutputTypes

指定主要類型和子類型的 GUID 組陣列指標,輸出針腳要相符。 陣列的大小為 2 * cOutputTypes。 陣列可以是 NULL。 個別陣列成員可以GUID_NULL,其符合任何類型。

[in] pMedOut

指定輸出針腳之媒體的 REGPINMEDIUM 結構的指標。 如有需要,請將 設定為 NULL

[in] pPinCategoryOut

指定輸出釘選類別之 GUID 的指標。 (請參閱 Pin 屬性 Set.) 視需要設定為 NULL

傳回值

傳回 HRESULT 值。 可能的值包括下表所示的值。

傳回碼 描述
S_OK
Success
E_FAIL
失敗
E_OUTOFMEMORY
記憶體不足
E_POINTER
NULL 指標自變數

備註

若要尋找輸入針腳符合指定之媒體類型的篩選,請宣告陣列,其中主要類型 GUID 和子類型 GUID 以配對排序。 在 pInputTypes 參數中傳遞陣列位址,並將 cInputTypes 參數設定為等於 (的配對數目,也就是數位大小的一半) :

C++
GUID arrayInTypes[2];arrayInTypes[0] = MEDIATYPE_Video;arrayInTypes[1] = GUID_NULL;

DWORD cInTypes = 1;

針對輸出針腳,在 pOutputTypes 參數中傳遞類似的陣列,並在 cOutputTypes 參數中指定 GUID 組的數目。

如果 bExactMatch 參數的值為 TRUE,這個方法會尋找完全符合您為媒體類型、釘選類別和釘選媒體指定的值的篩選條件。 如果值為 FALSE,則針對這些專案註冊 NULL 值的篩選會被視為相符專案。 (實際上,登錄中的 NULL 值可作為通配符。)

如果您為媒體類型、釘選類別或釘選媒體指定 NULL ,則會將任何篩選視為該參數的相符專案。

如果釘選未註冊任何媒體類型,則此方法不會將其視為媒體類型的相符專案。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限傳統型應用程式]
目標平台 Windows
標頭 strmif.h (包含 Dshow.h)
程式庫 Strmiids.lib

另請參閱

錯誤和成功碼

IFilterMapper2 介面