ChainInterfaces 结构

指定可应用于一组接口 ID 的验证和初始化函数。

语法

template <
    typename I0,
    typename I1,
    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 ChainInterfaces : I0;

template <
    typename DerivedType,
    typename BaseType,
    bool hasImplements,
    typename I1,
    typename I2,
    typename I3,
    typename I4,
    typename I5,
    typename I6,
    typename I7,
    typename I8,
    typename I9
>
struct ChainInterfaces<
    MixIn<
        DerivedType,
        BaseType,
        hasImplements
    >, I1, I2, I3, I4, I5, I6, I7, I8, I9
>;

参数

I0
(必需)接口 ID 0。

I1
(必需)接口 ID 1。

I2
(可选)接口 ID 2。

I3
(可选)接口 ID 3。

I4
(可选)接口 ID 4。

I5
(可选)接口 ID 5。

I6
(可选)接口 ID 6。

I7
(可选)接口 ID 7。

I8
(可选)接口 ID 8。

I9
(可选)接口 ID 9。

DerivedType
派生类型。

BaseType
派生类型的基本类型。

hasImplements
一个布尔值,如果为 true,则表示不能将 MixIn 结构与并非派生自 Implements 结构的类一起使用。

成员

受保护方法

名称 描述
ChainInterfaces::CanCastTo 指示是否可以将指定的接口 ID 强制转换为 ChainInterface 模板参数定义的每个专用化。
ChainInterfaces::CastToUnknown 将 I0 模板参数定义的类型的接口指针转换为指向 IUnknown 的指针。
ChainInterfaces::FillArrayWithIid 将由 I0 模板参数定义的接口 ID 存储到指定接口 ID 数组中的指定位置。
ChainInterfaces::Verify 验证由模板参数 I0 到 I9 定义的每个接口都继承自 和/或 IInspectable,并且 I0 继承自 I1 到 I9。IUnknown

受保护的常量

名称 描述
ChainInterfaces::IidCount 模板参数 I0 到 I9 指定的接口中包含的接口 ID 总数。

继承层次结构

I0

ChainInterfaces

要求

标头:implements.h

命名空间: Microsoft::WRL

ChainInterfaces::CanCastTo

指示是否可以将指定的接口 ID 强制转换为非默认模板参数定义的每个特化。

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

参数

riid
接口 ID。

ppv
指向成功转换的最后一个接口 ID 的指针。

返回值

如果所有强制转换操作均成功,则返回 true;否则返回 false

ChainInterfaces::CastToUnknown

将 I0 模板参数定义的类型的接口指针转换为指向 IUnknown 的指针。

__forceinline IUnknown* CastToUnknown();

返回值

一个指向 IUnknown 的指针。

ChainInterfaces::FillArrayWithIid

将由 I0 模板参数定义的接口 ID 存储到指定接口 ID 数组中的指定位置。

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

参数

index
指向 iids 数组的索引值的指针。

iids
接口 ID 的数组。

ChainInterfaces::IidCount

模板参数 I0 到 I9 指定的接口中包含的接口 ID 总数。

static const unsigned long IidCount = Details::InterfaceTraits<I0>::IidCount + Details::InterfaceTraits<I1>::IidCount + Details::InterfaceTraits<I2>::IidCount + Details::InterfaceTraits<I3>::IidCount + Details::InterfaceTraits<I4>::IidCount + Details::InterfaceTraits<I5>::IidCount + Details::InterfaceTraits<I6>::IidCount + Details::InterfaceTraits<I7>::IidCount + Details::InterfaceTraits<I8>::IidCount + Details::InterfaceTraits<I9>::IidCount;

返回值

接口 ID 的总数。

备注

模板参数 I0 和 I1 是必需的,参数 I2 到 I9 是可选的。 每个接口的 IID 计数通常为 1。

ChainInterfaces::Verify

验证由模板参数 I0 到 I9 定义的每个接口都继承自 和/或 IInspectable,并且 I0 继承自 I1 到 I9。IUnknown

WRL_NOTHROW __forceinline static void Verify();

注解

如果验证操作失败,则 static_assert 将发出描述失败的错误消息。

模板参数 I0 和 I1 是必需的,参数 I2 到 I9 是可选的。