Freigeben über


IFilterMapper2::EnumMatchingFilters-Methode (strmif.h)

[Das dieser Seite zugeordnete Feature DirectShow ist ein Legacyfeature. Es wurde durch MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation ersetzt. Diese Features wurden für Windows 10 und Windows 11 optimiert. Microsoft empfiehlt dringend, dass neuer Code nach Möglichkeit MediaPlayer, IMFMediaEngine und Audio/Video Capture in Media Foundation anstelle von DirectShow verwendet. Microsoft schlägt vor, vorhandenen Code, der die Legacy-APIs verwendet, um nach Möglichkeit die neuen APIs zu verwenden.]

Die EnumMatchingFilters Methode listet registrierte Filter auf, die die angegebenen Anforderungen erfüllen.

Syntax

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
);

Parameter

[out] ppEnum

Empfängt einen Zeiger auf die IEnumMoniker-Schnittstelle . Verwenden Sie diesen Schnittstellenzeiger, um Filtermoniker aus der Enumeration abzurufen. Der Aufrufer muss die Schnittstelle freigeben.

[in] dwFlags

Reserviert, muss Null sein.

[in] bExactMatch

Boolescher Wert, der angibt, ob eine genaue Übereinstimmung erforderlich ist. Weitere Informationen finden Sie unter Hinweise.

[in] dwMerit

Minimaler Leistungswert. Die Enumeration schließt Filter mit einem geringeren Wert aus. Eine Liste der Verdienstwerte finden Sie unter Verdienst. Wenn dwMerit höher als MERIT_DO_NOT_USE ist, schließt die Enumeration auch Filter aus, deren Kategorie einen Wert aufweist, der kleiner oder gleich MERIT_DO_NOT_USE ist. (Siehe Filterkategorien.)

[in] bInputNeeded

Boolescher Wert, der angibt, ob der Filter über einen Eingabenadel verfügen muss. Wenn der Wert TRUE ist, muss der Filter über mindestens einen Eingabenadel verfügen.

[in] cInputTypes

Anzahl der in pInputTypes angegebenen Eingabemedientypen.

[in] pInputTypes

Zeiger auf ein Array von GUID-Paaren, die Haupt- und Untertypen angeben, damit die Eingabenadeln übereinstimmen. Die Größe des Arrays ist 2 * cInputTypes. Das Array kann NULL sein. Einzelne Arraymember können GUID_NULL werden, die einem beliebigen Typ entsprechen. (Siehe Medientypen.)

[in] pMedIn

Zeiger auf eine REGPINMEDIUM-Struktur , die das Medium für die Eingabepins angibt. Legen Sie bei Bedarf auf NULL fest.

[in] pPinCategoryIn

Zeiger auf eine GUID, die die Eingabenadelkategorie angibt. (Siehe Pin Property Set.) Legen Sie bei Bedarf auf NULL fest.

[in] bRender

Boolescher Wert, der angibt, ob der Filter seine Eingabe rendern muss. Wenn true, muss der angegebene Filter seine Eingabe rendern. (Dieser Wert entspricht dem Feld bRendered in der REGFILTERPINS-Struktur , das zum Registrieren von Informationen über die Pins des Filters verwendet wird.)

[in] bOutputNeeded

Boolescher Wert, der angibt, ob der Filter über einen Ausgabenadel verfügen muss. Bei TRUE muss der Filter über mindestens einen Ausgabestift verfügen.

[in] cOutputTypes

Anzahl der in pOutputTypes angegebenen Eingabemedientypen.

[in] pOutputTypes

Zeiger auf ein Array von GUID-Paaren, die Haupt- und Untertypen angeben, damit die Ausgabepins übereinstimmen. Die Größe des Arrays ist 2 * cOutputTypes. Das Array kann NULL sein. Einzelne Arraymember können GUID_NULL werden, die einem beliebigen Typ entsprechen.

[in] pMedOut

Zeiger auf eine REGPINMEDIUM-Struktur , die das Medium für die Ausgabepins angibt. Legen Sie bei Bedarf auf NULL fest.

[in] pPinCategoryOut

Zeiger auf eine GUID, die die Ausgabeheftkategorie angibt. (Siehe Pin Property Set.) Legen Sie bei Bedarf auf NULL fest.

Rückgabewert

Gibt einen HRESULT-Wert zurück. Mögliche Werte sind die in der folgenden Tabelle gezeigten Werte.

Rückgabecode BESCHREIBUNG
S_OK
Erfolg
E_FAIL
Fehler
E_OUTOFMEMORY
Der Arbeitsspeicher reicht nicht aus
E_POINTER
NULL-Zeigerargument

Hinweise

Um Filter zu finden, deren Eingabenadeln mit einer bestimmten Gruppe von Medientypen übereinstimmen, deklarieren Sie ein Array mit Haupttyp-GUIDs und Untertyp-GUIDs, die paarweise sortiert sind. Übergeben Sie die Arrayadresse im pInputTypes-Parameter , und legen Sie den cInputTypes-Parameter auf die Anzahl der Paare (also die halbe Arraygröße) fest:

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

DWORD cInTypes = 1;

Übergeben Sie für Ausgabepins ein ähnliches Array im pOutputTypes-Parameter , und geben Sie die Anzahl der GUID-Paare im Parameter cOutputTypes an .

Wenn der Wert des bExactMatch-ParametersTRUE ist, sucht diese Methode nach Filtern, die genau den Werten entsprechen, die Sie für Medientyp, Anheftkategorie und Anheftmedium angeben. Wenn der Wert FALSE ist, werden Filter, die den Wert NULL für eines dieser Elemente registrieren, als Übereinstimmung betrachtet. (Tatsächlich fungiert ein NULL-Wert in der Registrierung als Einplatzhalter.)

Wenn Sie NULL für Den Medientyp, die Anheftungskategorie oder das Anheftmedium angeben, wird jeder Filter als Übereinstimmung mit diesem Parameter betrachtet.

Wenn ein Pin keine Medientypen registriert hat, wird er von dieser Methode nicht als Übereinstimmung mit dem Medientyp betrachtet.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Zielplattform Windows
Kopfzeile strmif.h (include Dshow.h)
Bibliothek Strmiids.lib

Weitere Informationen

Fehler- und Erfolgscodes

IFilterMapper2-Schnittstelle