Méthode ICaptureGraphBuilder2 ::FindInterface (strmif.h)

[La fonctionnalité associée à cette page, DirectShow, est une fonctionnalité héritée. Il a été remplacé par MediaPlayer, IMFMediaEngine et Audio/Video Capture in Media Foundation. Ces fonctionnalités ont été optimisées pour Windows 10 et Windows 11. Microsoft recommande vivement que le nouveau code utilise MediaPlayer, IMFMediaEngine et Audio/Video Capture dans Media Foundation au lieu de DirectShow, si possible. Microsoft suggère que le code existant qui utilise les API héritées soit réécrit pour utiliser les nouvelles API si possible.]

La FindInterface méthode recherche dans le graphique une interface spécifiée, en commençant à partir d’un filtre spécifié. Vous pouvez limiter la recherche à une section du graphique amont ou en aval du filtre, ou la restreindre à une catégorie d’épingle ou à un type de média particulier.

Syntaxe

HRESULT FindInterface(
  [in]  const GUID  *pCategory,
  [in]  const GUID  *pType,
  [in]  IBaseFilter *pf,
  [in]  REFIID      riid,
  [out] void        **ppint
);

Paramètres

[in] pCategory

Pointeur vers un GUID qui spécifie les critères de recherche. Pour plus d'informations, consultez la section Notes. Les valeurs suivantes sont possibles :

  • &LOOK_UPSTREAM_ONLY.
  • &LOOK_DOWNSTREAM_ONLY.
  • Une des catégories d’épingles répertoriées dans Pin Property Set.
  • NULL
Pour plus d'informations, consultez la section Notes.

[in] pType

Pointeur vers un GUID qui spécifie le type de média principal d’une broche de sortie, ou NULL.

[in] pf

Pointeur vers l’interface IBaseFilter du filtre. La méthode commence la recherche à partir de ce filtre.

[in] riid

Identificateur d’interface (IID) de l’interface à localiser.

[out] ppint

Adresse d’une variable qui reçoit le pointeur d’interface. Veillez à libérer le pointeur d’interface récupéré lorsque vous avez terminé avec l’interface.

Valeur retournée

Retourne une valeur HRESULT . Les valeurs possibles sont les suivantes.

Code de retour Description
S_OK
Réussite.
E_FAIL
Échec.
E_NOINTERFACE
Aucune interface de ce type n’est prise en charge.
E_POINTER
Argument pointeur NULL .

Remarques

Dans un graphique de capture, différents filtres et broches peuvent exposer des interfaces permettant de définir des propriétés telles que des paramètres de compression (IAMVideoCompression) ou des formats de flux (IAMStreamConfig). Selon le périphérique de capture, d’autres interfaces utiles peuvent inclure IAMCrossbar, qui achemine les signaux analogiques, ou IAMTVTuner, qui contrôle un appareil tuner TV. Vous pouvez utiliser cette méthode pour rechercher une interface, sans écrire de code spécial qui traverse le graphique.

Important N’appelez pas cette méthode pour obtenir un pointeur d’interface IVideoWindow . Interrogez toujours le gestionnaire de graphe de filtres pour cette interface. Sinon, le gestionnaire de graphe de filtres ne répond pas correctement aux modifications apportées à la résolution d’écran et à d’autres événements.
 
Si le paramètre pCategory a la valeur NULL, cette méthode recherche l’interface demandée dans l’ensemble du graphique. À partir du filtre spécifié par le paramètre pf , il interroge les objets suivants dans le graphique.
  • Filtre
  • Broches du filtre
  • Tous les filtres en aval, y compris leurs broches
  • Tous les filtres amont, y compris leurs broches
Vous pouvez restreindre la recherche en définissant les paramètres pCategory et pType , comme suit :
  • Si pCategory est égal &LOOK_UPSTREAM_ONLY, la recherche commence à partir des broches d’entrée du filtre et se poursuit amont. Il n’inclut pas le filtre ou quoi que ce soit en aval du filtre. Le paramètre pType est ignoré.
  • Si pCategory est égal à &LOOK_DOWNSTREAM_ONLY, la recherche commence à partir des broches de sortie du filtre et se poursuit en aval. Il n’inclut pas le filtre ou quoi que ce soit amont du filtre. Le paramètre pType est ignoré.
  • Si pCategory spécifie une catégorie d’épingle, la partie en aval de la recherche est limitée aux broches de sortie sur le filtre qui correspondent à la fois à la catégorie de broche et au type de média indiqué dans le paramètre pType . Dans ce cas, la méthode recherche également le filtre et tout ce qui amont à partir du filtre.
En outre, si pCategory n’a pas la valeur NULL, la méthode peut ajouter certains filtres WDM (Windows Driver Model) amont à partir du filtre spécifié dans pf. Pour plus d’informations, consultez les remarques sous « Filtres de prise en charge » dans cette section.

Les catégories d’épingles sont utiles pour rechercher des interfaces d’épingle sur des filtres de capture. Par exemple, un filtre de capture peut avoir des broches distinctes pour la capture et l’aperçu. Si vous spécifiez une catégorie d’épingle, vous devez également spécifier le type de média pour vous assurer que la méthode sélectionne le filtre et l’épingle appropriés.

Certains filtres de capture vidéo ont une broche de port vidéo (PIN_CATEGORY_VIDEOPORT) au lieu d’une broche d’aperçu. Si vous spécifiez PIN_CATEGORY_PREVIEW et MEDIATYPE_Video, la méthode traite les broches de port vidéo comme des broches d’aperçu. Votre application n’a pas besoin de tester cette possibilité.

Filtres de prise en charge. Si un périphérique de capture utilise un pilote WDM (Windows Driver Model), le graphique peut nécessiter certains filtres amont à partir du filtre de capture vidéo WDM, par exemple un filtre Tuner TV ou un filtre de barre croisée vidéo analogique. Si le paramètre pCategory n’est pas égal à NULL, cette méthode insère automatiquement les filtres WDM requis dans le graphique. Pour ce faire, il interroge les broches d’entrée sur le filtre de capture pour déterminer les supports qu’elles prennent en charge et les connecte aux filtres correspondants. Si le paramètre pCategory a la valeur NULL, la méthode n’ajoute pas les filtres amont.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête strmif.h (include Dshow.h)
Bibliothèque Strmiids.lib

Voir aussi

Codes d’erreur et de réussite

ICaptureGraphBuilder2, interface