Metodo ICaptureGraphBuilder2::FindInterface (strmif.h)

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

Il FindInterface metodo cerca nel grafico un'interfaccia specificata, a partire da un filtro specificato. È possibile limitare la ricerca a una sezione del grafico a monte o a valle del filtro oppure limitarla a una determinata categoria di puntina o a un tipo di supporto specifico.

Sintassi

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

Parametri

[in] pCategory

Puntatore a un GUID che specifica i criteri di ricerca. Per ulteriori informazioni, vedere la sezione Osservazioni. Sono possibili i valori seguenti:

  • &LOOK_UPSTREAM_ONLY.
  • &LOOK_DOWNSTREAM_ONLY.
  • Una delle categorie di pin elencate nel set di proprietà Pin.
  • NULL
Per ulteriori informazioni, vedere la sezione Osservazioni.

[in] pType

Puntatore a un GUID che specifica il tipo di supporto principale di un pin di output o NULL.

[in] pf

Puntatore all'interfaccia IBaseFilter del filtro. Il metodo inizia la ricerca da questo filtro.

[in] riid

Identificatore di interfaccia (IID) dell'interfaccia da individuare.

[out] ppint

Indirizzo di una variabile che riceve il puntatore all'interfaccia. Assicurarsi di rilasciare il puntatore all'interfaccia recuperato al termine dell'interfaccia.

Valore restituito

Restituisce un valore HRESULT . Di seguito sono indicati alcuni valori possibili.

Codice restituito Descrizione
S_OK
Operazione completata.
E_FAIL
Esito negativo.
E_NOINTERFACE
Nessuna interfaccia di questo tipo supportata.
E_POINTER
Argomento puntatore NULL.

Commenti

In un grafico di acquisizione, vari filtri e pin potrebbero esporre interfacce per l'impostazione di proprietà, ad esempio i parametri di compressione (IAMVideoCompression) o i formati di flusso (IAMStreamConfig). A seconda del dispositivo di acquisizione, altre interfacce utili possono includere IAMCrossbar, che instrada i segnali analogici o IAMTVTuner, che controlla un dispositivo di tuner TV. È possibile usare questo metodo per trovare un'interfaccia, senza scrivere codice speciale che attraversa il grafico.

Importante Non chiamare questo metodo per ottenere un puntatore all'interfaccia IVideoWindow . Eseguire sempre una query sul gestore del grafo del filtro per questa interfaccia. In caso contrario, gestione graph del filtro non risponderà correttamente alle modifiche apportate alla risoluzione dello schermo e ad altri eventi.
 
Se il parametro pCategory è NULL, questo metodo cerca l'interfaccia richiesta nell'intero grafico. A partire dal filtro specificato dal parametro pf , esegue una query sugli oggetti seguenti nel grafico.
  • Filtro
  • Pin del filtro
  • Tutti i filtri downstream, inclusi i relativi pin
  • Tutti i filtri upstream, inclusi i relativi pin
È possibile limitare la ricerca impostando i parametri pCategory e pType , come indicato di seguito:
  • Se pCategory è uguale a &LOOK_UPSTREAM_ONLY, la ricerca inizia dai pin di input del filtro e continua a monte. Non include il filtro o qualsiasi elemento downstream dal filtro. Il parametro pType viene ignorato.
  • Se pCategory è uguale a &LOOK_DOWNSTREAM_ONLY, la ricerca inizia dai pin di output del filtro e continua a valle. Non include il filtro o qualsiasi elemento upstream dal filtro. Il parametro pType viene ignorato.
  • Se pCategory specifica una categoria di pin, la parte downstream della ricerca è limitata ai pin di output nel filtro che corrispondono sia alla categoria pin che al tipo di supporto specificato nel parametro pType . In questo caso, il metodo cerca anche il filtro e tutto a monte dal filtro.
Inoltre, se pCategory è diverso da NULL, il metodo può aggiungere determinati filtri wdm (Windows Driver Model) upstream dal filtro specificato in pf. Per altre informazioni, vedere le osservazioni in "Filtri di supporto" in questa sezione.

Le categorie di pin sono utili per trovare le interfacce dei pin nei filtri di acquisizione. Ad esempio, un filtro di acquisizione potrebbe avere pin separati per l'acquisizione e l'anteprima. Se si specifica una categoria di pin, è necessario specificare anche il tipo di supporto, per assicurarsi che il metodo selezioni il filtro e il pin corretti.

Alcuni filtri di acquisizione video hanno un pin di porta video (PIN_CATEGORY_VIDEOPORT) anziché un pin di anteprima. Se si specifica PIN_CATEGORY_PREVIEW e MEDIATYPE_Video, il metodo considera i pin delle porte video come pin di anteprima. L'applicazione non deve testare questa possibilità.

Filtri di supporto. Se un dispositivo di acquisizione usa un driver WDM (Windows Driver Model), il grafico potrebbe richiedere determinati filtri upstream dal filtro di acquisizione video WDM , ad esempio un filtro tuner TV o un filtro barra incrociata video analogica . Se il parametro pCategory non è uguale a NULL, questo metodo inserisce automaticamente eventuali filtri WDM necessari nel grafico. A tale scopo, esegue una query sui pin di input nel filtro di acquisizione per determinare quali supporti supportano e li connette ai filtri corrispondenti. Se il parametro pCategory è NULL, il metodo non aggiunge i filtri upstream.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione strmif.h (include Dshow.h)
Libreria Strmiids.lib

Vedi anche

Codici di errore e di esito positivo

Interfaccia ICaptureGraphBuilder2