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

A macro DECLARE_IUNKNOWN declara os três métodos da interface base para uma nova interface.

Sintaxe

#define DECLARE_IUNKNOWN                                        \
    STDMETHODIMP QueryInterface(REFIID riid, void **ppv) {      \
        return GetOwner()->QueryInterface(riid,ppv);            \
    };                                                          \
    STDMETHODIMP_(ULONG) AddRef() {                             \
        return GetOwner()->AddRef();                            \
    };                                                          \
    STDMETHODIMP_(ULONG) Release() {                            \
        return GetOwner()->Release();                           \
    };

Comentários

Quando você cria uma nova interface, ela deve derivar de IUnknown, que tem três métodos: QueryInterface, AddRef e Release. Essa macro simplifica o processo de declaração declarando cada um desses métodos para a nova interface.

Essa macro funciona apenas com classes que derivam, direta ou indiretamente, da classe CUnknown .

Requisitos

Requisito Valor
parâmetro
Combase.h (inclua Streams.h)
Biblioteca
Strmbase.lib (builds de varejo);
Strmbasd.lib (builds de depuração)

Confira também

Funções auxiliares COM

CUnknown::GetOwner

Como implementar o IUnknown