Compartilhar via


Controlando grafos de filtro usando C

[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.]

Se você estiver escrevendo um aplicativo DirectShow em C (em vez de C++), deverá usar um ponteiro vtable para chamar métodos. O exemplo a seguir ilustra como chamar o método IUnknown::QueryInterface de um aplicativo escrito em C:

pGraph->lpVtbl->QueryInterface(pGraph, &IID_IMediaEvent, (void **)&pEvent);

O seguinte mostra a chamada equivalente em C++:

pGraph->QueryInterface(IID_IMediaEvent, (void **)&pEvent);

Em C, as interfaces COM são definidas como estruturas. O membro lpVtbl é um ponteiro para uma tabela de métodos de interface (a vtable). Todos os métodos assumem um parâmetro adicional, que é um ponteiro para a interface.

Apêndices