Condividi tramite


DECLARE_IUNKNOWN

[La funzionalità associata a questa pagina, DirectShow, è una funzionalità legacy. È stata sostituita da MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation. Queste funzionalità sono state ottimizzate per Windows 10 e Windows 11. Microsoft consiglia vivamente che il nuovo codice usi MediaPlayer, IMFMediaEngine e Audio/Video Capture in Media Foundation invece di DirectShow, quando possibile. Microsoft suggerisce che il codice esistente che usa le API legacy venga riscritto per usare le nuove API, se possibile.

La macro DECLARE_IUNKNOWN dichiara i tre metodi dell'interfaccia di base per una nuova interfaccia.

Sintassi

#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();                           \
    };

Commenti

Quando si crea una nuova interfaccia, deve derivare da IUnknown, che include tre metodi: QueryInterface, AddRef e Release. Questa macro semplifica il processo di dichiarazione dichiarando ognuno di questi metodi per la nuova interfaccia.

Questa macro funziona solo con le classi che derivano, direttamente o indirettamente, dalla classe CUnknown .

Requisiti

Requisito Valore
Intestazione
Combase.h (include Streams.h)
Libreria
Strmbase.lib (build retail);
Strmbasd.lib (build di debug)

Vedi anche

Funzioni helper COM

CUnknown::GetOwner

Come implementare IUnknown