Compartilhar via


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

[O recurso associado a esta página, DirectShow, é um recurso herdado. Ele foi substituído por MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo na Media Foundation. Esses recursos foram otimizados para Windows 10 e Windows 11. A Microsoft recomenda fortemente que o novo código use MediaPlayer, IMFMediaEngine e Captura de Áudio/Vídeo no Media Foundation em vez de DirectShow, quando possível. A Microsoft sugere que o código existente que usa as APIs herdadas seja reescrito para usar as novas APIs, se possível.]

O FindInterface método pesquisa no grafo uma interface especificada, começando por um filtro especificado. Você pode restringir a pesquisa a uma seção do grafo upstream ou downstream do filtro ou restringi-la a uma determinada categoria de pino ou tipo de mídia.

Sintaxe

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

Parâmetros

[in] pCategory

Um ponteiro para um GUID que especifica os critérios de pesquisa. Confira Comentários para obter mais informações. Os seguintes valores são possíveis:

Confira Comentários para obter mais informações.

[in] pType

Ponteiro para um GUID que especifica o tipo de mídia principal de um pino de saída ou NULL.

[in] pf

Ponteiro para a interface IBaseFilter do filtro. O método começa a pesquisar a partir desse filtro.

[in] riid

IID (identificador de interface) da interface a ser localizada.

[out] ppint

Endereço de uma variável que recebe o ponteiro da interface. Certifique-se de liberar o ponteiro da interface recuperada quando terminar de usar a interface .

Retornar valor

Retorna um valor HRESULT . Os possíveis valores incluem os seguintes.

Código de retorno Descrição
S_OK
Êxito.
E_FAIL
Falha.
E_NOINTERFACE
Não há suporte para essa interface.
E_POINTER
Argumento de ponteiro NULL.

Comentários

Em um grafo de captura, vários filtros e pinos podem expor interfaces para definir propriedades, como parâmetros de compactação (IAMVideoCompression) ou formatos de fluxo (IAMStreamConfig). Dependendo do dispositivo de captura, outras interfaces úteis podem incluir IAMCrossbar, que roteia sinais analógicos, ou IAMTVTuner, que controla um dispositivo de sintonizador de TV. Você pode usar esse método para encontrar uma interface, sem escrever um código especial que percorra o grafo.

Importante Não chame esse método para obter um ponteiro de interface IVideoWindow . Sempre consulte o gerenciador de grafo de filtro para essa interface. Caso contrário, o gerenciador de grafo de filtro não responderá corretamente às alterações na resolução de tela e outros eventos.
 
Se o parâmetro pCategory for NULL, esse método pesquisa todo o grafo para a interface solicitada. A partir do filtro especificado pelo parâmetro pf , ele consulta os seguintes objetos no grafo.
  • O filtro
  • Os pinos do filtro
  • Todos os filtros downstream, incluindo seus pinos
  • Todos os filtros upstream, incluindo seus pinos
Você pode restringir a pesquisa definindo os parâmetros pCategory e pType da seguinte maneira:
  • Se pCategory for igual a &LOOK_UPSTREAM_ONLY, a pesquisa começará a partir dos pinos de entrada do filtro e continuará upstream. Ele não inclui o filtro nem nada downstream do filtro. O parâmetro pType é ignorado.
  • Se pCategory for igual a &LOOK_DOWNSTREAM_ONLY, a pesquisa começará a partir dos pinos de saída do filtro e continuará downstream. Ele não inclui o filtro nem nada upstream do filtro. O parâmetro pType é ignorado.
  • Se pCategory especificar uma categoria de pino, a parte downstream da pesquisa será restrita a pinos de saída no filtro que correspondem à categoria de pino e ao tipo de mídia fornecido no parâmetro pType . Nesse caso, o método também pesquisa o filtro e tudo upstream do filtro.
Além disso, se pCategory não for NULL, o método poderá adicionar determinados filtros WDM (Modelo de Driver do Windows) upstream do filtro especificado no pf. Confira as observações em "Filtros de Suporte" nesta seção para obter mais informações.

As categorias de pin são úteis para localizar interfaces de pino em filtros de captura. Por exemplo, um filtro de captura pode ter pinos separados para captura e visualização. Se você especificar uma categoria de pino, também deverá especificar o tipo de mídia, para garantir que o método selecione o filtro e o pino corretos.

Alguns filtros de captura de vídeo têm um pino de porta de vídeo (PIN_CATEGORY_VIDEOPORT) em vez de um pin de visualização. Se você especificar PIN_CATEGORY_PREVIEW e MEDIATYPE_Video, o método tratará todos os pinos de porta de vídeo como pinos de visualização. Seu aplicativo não precisa testar essa possibilidade.

Filtros de suporte. Se um dispositivo de captura usar um driver WDM (Modelo de Driver do Windows), o grafo poderá exigir determinados filtros upstream do filtro captura de vídeo do WDM, como um filtro de Sintonizador de TV ou um filtro de barra cruzada de vídeo analógico. Se o parâmetro pCategory não for igual a NULL, esse método inserirá automaticamente todos os filtros WDM necessários no grafo. Para fazer isso, ele consulta os pinos de entrada no filtro de captura para determinar quais meios eles dão suporte e os conecta a filtros correspondentes. Se o parâmetro pCategory for NULL, o método não adicionará os filtros upstream.

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows 2000 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows 2000 Server [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho strmif.h (inclua Dshow.h)
Biblioteca Strmiids.lib

Confira também

Códigos de erro e êxito

ICaptureGraphBuilder2 Interface