Поделиться через


DECLARE_IUNKNOWN

[Функция, связанная с этой страницей DirectShow, является устаревшей функцией. Он был заменен MediaPlayer, IMFMediaEngine, и аудио/ видео захвата в Media Foundation. Эти функции оптимизированы для Windows 10 и Windows 11. Корпорация Майкрософт настоятельно рекомендует использовать в новом коде MediaPlayer, IMFMediaEngine и аудио/видеозахват в Media Foundation вместо DirectShow, когда это возможно. Корпорация Майкрософт предлагает переписать существующий код, в котором используются устаревшие API, чтобы по возможности использовать новые API.]

Макрос DECLARE_IUNKNOWN объявляет три метода базового интерфейса для нового интерфейса.

Синтаксис

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

Комментарии

При создании нового интерфейса он должен быть производным от IUnknown, который имеет три метода: QueryInterface, AddRef и Release. Этот макрос упрощает процесс объявления, объявляя каждый из этих методов для нового интерфейса.

Этот макрос работает только с классами, которые прямо или косвенно являются производными от класса CUnknown .

Требования

Требование Значение
Заголовок
Combase.h (включая Streams.h)
Библиотека
Strmbase.lib (розничные сборки);
Strmbasd.lib (отладочные сборки)

См. также раздел

Вспомогательные функции COM

CUnknown::GetOwner

Реализация IUnknown