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 是可选的。