Como implementar o IUnknown

[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 Microsoft DirectShow é baseado no COM (Component Object Model). Se você escrever seu próprio filtro, deverá implementá-lo como um objeto COM. As classes base do DirectShow fornecem uma estrutura da qual fazer isso. O uso das classes base não é necessário, mas pode simplificar o processo de desenvolvimento. Este artigo descreve alguns dos detalhes internos dos objetos COM e sua implementação nas classes base do DirectShow.

Este artigo pressupõe que você saiba como programar aplicativos cliente COM, em outras palavras, que você entende os métodos em IUnknown, mas não pressupõe nenhuma experiência anterior no desenvolvimento de objetos COM. O DirectShow lida com muitos dos detalhes do desenvolvimento de um objeto COM. Se você tiver experiência no desenvolvimento de objetos COM, leia a seção Usando CUnknown, que descreve a classe base CUnknown .

COM é uma especificação, não uma implementação. Ele define as regras que um componente deve seguir; colocar essas regras em vigor é deixado para o desenvolvedor. No DirectShow, todos os objetos derivam de um conjunto de classes base C++. Os construtores e métodos de classe base fazem a maior parte do trabalho de "contabilidade" COM, como manter uma contagem de referência consistente. Ao derivar o filtro de uma classe base, você herda a funcionalidade da classe . Para usar classes base com eficiência, você precisa de uma compreensão geral de como elas implementam a especificação COM.

Este artigo contém os tópicos a seguir.

DirectShow e COM