Export (0) Print
Expand All

DECLARE_IUNKNOWN

The DECLARE_IUNKNOWN macro declares the three methods of the base interface for a new interface.

Syntax

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

Remarks

When you create a new interface, it must derive from IUnknown, which has three methods: QueryInterface, AddRef, and Release. This macro simplifies the declaration process by declaring each of these methods for the new interface.

This macro works only with classes that derive, directly or indirectly, from the CUnknown class.

Requirements

Header

Combase.h (include Streams.h)

Library

Strmbase.lib (retail builds);
Strmbasd.lib (debug builds)

See also

COM Helper Functions
CUnknown::GetOwner
How to Implement IUnknown

 

 

Community Additions

ADD
Show:
© 2015 Microsoft