Share via


Implements 结构

为指定接口实现 QueryInterfaceGetIid

语法

template <
    typename I0,
    typename I1 = Details::Nil,
    typename I2 = Details::Nil,
    typename I3 = Details::Nil,
    typename I4 = Details::Nil,
    typename I5 = Details::Nil,
    typename I6 = Details::Nil,
    typename I7 = Details::Nil,
    typename I8 = Details::Nil,
    typename I9 = Details::Nil
>
struct __declspec(novtable) Implements :
    Details::ImplementsHelper<
        RuntimeClassFlags<WinRt>,
        typename Details::InterfaceListHelper<
            I0, I1, I2, I3, I4, I5, I6, I7, I8, I9
        >::TypeT
    >,
    Details::ImplementsBase;

template <
    int flags,
    typename I0,
    typename I1,
    typename I2,
    typename I3,
    typename I4,
    typename I5,
    typename I6,
    typename I7,
    typename I8
>
struct __declspec(novtable) Implements<
        RuntimeClassFlags<flags>,
        I0, I1, I2, I3, I4, I5, I6, I7, I8> :
    Details::ImplementsHelper<
        RuntimeClassFlags<flags>,
        typename Details::InterfaceListHelper<
            I0, I1, I2, I3, I4, I5, I6, I7, I8
        >::TypeT
    >,
    Details::ImplementsBase;

参数

I0
第零个接口 ID。 (必需)

I1
第一个接口 ID。 (可选)

I2
第二个接口 ID。 (可选)

I3
第三个接口 ID。 (可选)

I4
第四个接口 ID。 (可选)

I5
第五个接口 ID。 (可选)

I6
第六个接口 ID。 (可选)

I7
第七个接口 ID。 (可选)

I8
第八个接口 ID。 (可选)

I9
第九个接口 ID。 (可选)

flags
类的配置标志。 在 RuntimeClassFlags 结构中指定的一个或多个 RuntimeClassType 枚举。

注解

派生自指定接口的列表,并为 QueryInterfaceGetIid 实现帮助程序模板。

每个 I0I9 接口参数都必须派生自 IUnknownIInspectableChainInterfaces 模板。 标志参数确定是为 IUnknown 还是 IInspectable 生成支持。

成员

公共 Typedef

名称 描述
ClassFlags RuntimeClassFlags<WinRt> 的同义词。

受保护方法

名称 描述
Implements::CanCastTo 获取指向指定接口的指针。
Implements::CastToUnknown 获取指向基础 IUnknown 接口的指针。
Implements::FillArrayWithIid 将当前零模板参数指定的接口 ID 插入指定的数组元素。

受保护的常量

名称 描述
Implements::IidCount 保存实现的接口 ID 的数目。

继承层次结构

I0

ChainInterfaces

I0

ImplementsBase

ImplementsHelper

Implements

要求

标头:implements.h

命名空间: Microsoft::WRL

Implements::CanCastTo

获取指向指定接口的指针。

__forceinline HRESULT CanCastTo(
   REFIID riid,
   _Deref_out_ void **ppv
);

参数

riid
对接口 ID 的引用。

ppv
如果成功,则指向 riid 指定的接口的指针。

返回值

如果成功,则为 S_OK;否则为指示错误的 HRESULT,例如 E_NOINTERFACE。

备注

这是执行 QueryInterface 操作的内部帮助程序函数。

Implements::CastToUnknown

获取指向基础 IUnknown 接口的指针。

__forceinline IUnknown* CastToUnknown();

返回值

此操作始终成功并返回 IUnknown 指针。

备注

内部帮助程序函数。

Implements::FillArrayWithIid

将当前零模板参数指定的接口 ID 插入指定的数组元素。

__forceinline static void FillArrayWithIid(
   unsigned long &index,
   _In_ IID* iids
);

参数

index
一个从零开始的索引,指示此操作的起始数组元素。 此操作完成后,索引将递增 1。

iids
IID 类型的数组。

备注

内部帮助程序函数。

Implements::IidCount

保存实现的接口 ID 的数目。

static const unsigned long IidCount;