Compartilhar via


Método IFilterGraph2::AddSourceFilterForMoniker (strmif.h)

[O recurso associado a esta página, DirectShow, é um recurso herdado. Foi substituído por MediaPlayer, IMFMediaEngine e Audio/Video Capture in 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 Audio/Video Capture in 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 AddSourceFilterForMoniker método cria um filtro de origem de um ponteiro IMoniker e adiciona o filtro ao grafo. Por exemplo, você pode obter um moniker para um dispositivo do sistema, como um dispositivo de captura de vídeo, e adicionar um filtro de captura de vídeo para esse dispositivo. (Para obter mais informações sobre monikers de dispositivo do sistema, consulte a interface ICreateDevEnum .)

Sintaxe

HRESULT AddSourceFilterForMoniker(
  [in]  IMoniker    *pMoniker,
  [in]  IBindCtx    *pCtx,
  [in]  LPCWSTR     lpcwstrFilterName,
  [out] IBaseFilter **ppFilter
);

Parâmetros

[in] pMoniker

Ponteiro para a interface IMoniker .

[in] pCtx

Ponteiro para uma interface de contexto de associação IBindCtx .

[in] lpcwstrFilterName

Nome do filtro.

[out] ppFilter

Recebe um ponteiro para o ponteiro IBaseFilter do filtro de origem. O chamador deve liberar a interface .

Retornar valor

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

Código de retorno Descrição
S_OK
Êxito.
VFW_S_DUPLICATE_NAME
Sucesso; mas o nome especificado era uma duplicata, portanto, o Gerenciador de Grafo de Filtro modificou o nome.
E_FAIL
Falha.
E_OUTOFMEMORY
Memória insuficiente.
VFW_E_DUPLICATE_NAME
Falha ao adicionar um filtro com um nome duplicado.
VFW_E_CANNOT_LOAD_SOURCE_FILTER
Não foi possível carregar o filtro de origem para.
VFW_E_UNKNOWN_FILE_TYPE
O tipo de mídia desse arquivo não é reconhecido.

Comentários

O Gerenciador de Grafo de Filtro mantém uma contagem de referência no filtro até que o filtro seja removido do grafo ou o Gerenciador de Grafo de Filtro seja liberado.

Exemplos

C++
IBaseFilter *pSource = NULL; IMoniker *pMoniker = NULL;

Use IEnumMonikers para obter o ponteiro IMoniker. (Não mostrado.)

// Create a bind context for working with the moniker. IBindCtx pContext=0; hr = CreateBindCtx(0, &pContext); if (SUCCEEDED(hr)) { // Query the Filter Graph Manager for IFilterGraph2. IFilterGraph2 pFG2 = NULL; hr = pGraph->QueryInterface(IID_IFilterGraph2, (void)&pFG2); if (SUCCEEDED(hr)) { // Create the source filter. hr = pFG2->AddSourceFilterForMoniker(pMoniker, pContext, L"Source", &pSource); pFG2->Release(); } pContext->Release(); } pMoniker->Release();

Requisitos

   
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

IFilterGraph2 Interface