DECLARE_IUNKNOWN

[与此页面关联的功能 DirectShow 是旧版功能。 它已被 MediaPlayerIMFMediaEngineMedia Foundation 中的音频/视频捕获所取代。 这些功能已针对Windows 10和Windows 11进行了优化。 Microsoft 强烈建议新代码尽可能在 Media Foundation 中使用 MediaPlayerIMFMediaEngine音频/视频捕获 ,而不是 DirectShow。 如果可能,Microsoft 建议重写使用旧 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,它具有三种方法: QueryInterfaceAddRefRelease。 此宏通过为新接口声明上述每种方法来简化声明过程。

此宏仅适用于直接或间接从 CUnknown 类派生的类。

要求

要求
标头
Combase.h (包括 Streams.h)

Strmbase.lib (零售版本) ;
Strmbasd.lib (调试生成)

另请参阅

COM 帮助程序函数

CUnknown::GetOwner

如何实现 IUnknown