InterfaceTraits 结构

支持 WRL 基础结构,不应在代码中直接使用。

语法

template<typename I0>
struct __declspec(novtable) InterfaceTraits;

template<typename CloakedType>
struct __declspec(novtable) InterfaceTraits<
    CloakedIid<CloakedType>
>;

template<>
struct __declspec(novtable) InterfaceTraits<Nil>;

参数

I0
接口的名称。

CloakedType
对于 RuntimeClassImplementsChainInterfaces,为不在受支持的接口 ID 列表中的接口。

注解

实现接口的常见特征。

第二个模板是掩蔽接口的专用化。 第三个模板是 Nil 参数的专用化。

成员

公共 Typedef

名称 描述
Base I0 模板参数的同义词

公共方法

名称 描述
InterfaceTraits::CanCastTo 指示是否可以将指定指针强制转换为指向 Base 的指针。
InterfaceTraits::CastToBase 将指定指针强制转换为指向 Base 的指针。
InterfaceTraits::CastToUnknown 将指定指针强制转换为指向 IUnknown 的指针。
InterfaceTraits::FillArrayWithIid Base 的接口 ID 分配给索引参数指定的数组元素。
InterfaceTraits::Verify 验证是否正确派生了 Base

公共常量

“属性” 描述
InterfaceTraits::IidCount 保存与当前 InterfaceTraits 对象关联的接口 ID 数。

继承层次结构

InterfaceTraits

要求

标头:implements.h

命名空间:Microsoft::WRL::Details

InterfaceTraits::CanCastTo

支持 WRL 基础结构,不应在代码中直接使用。

template<typename T>
static __forceinline bool CanCastTo(
   _In_ T* ptr,
   REFIID riid,
   _Deref_out_ void **ppv
);

参数

ptr
指向类型的指针的名称。

riid
Base 的接口 ID。

ppv
如果此操作成功,则 ppv 指向 Base 指定的接口。 否则,ppv 设置为 nullptr

返回值

如果此操作成功且 ptr 被强制转换为指向 Base 的指针,则为 true;否则为 false

注解

指示是否可以将指定指针强制转换为指向 Base 的指针。

有关 Base 的详细信息,请参阅公共 Typedef 部分。

InterfaceTraits::CastToBase

支持 WRL 基础结构,不应在代码中直接使用。

template<typename T>
static __forceinline Base* CastToBase(
   _In_ T* ptr
);

参数

T
参数 ptr 的类型

ptr
指向类型 T 的指针

返回值

一个指向 Base 的指针。

备注

将指定指针强制转换为指向 Base 的指针。

有关 Base 的详细信息,请参阅公共 Typedef 部分。

InterfaceTraits::CastToUnknown

支持 WRL 基础结构,不应在代码中直接使用。

template<typename T>
static __forceinline IUnknown* CastToUnknown(
   _In_ T* ptr
);

参数

T
参数 ptr 的类型

ptr
指向类型 T 的指针

返回值

指向从中派生了 Base 的 IUnknown 的指针。

备注

将指定指针强制转换为指向 IUnknown 的指针。

有关 Base 的详细信息,请参阅公共 Typedef 部分。

InterfaceTraits::FillArrayWithIid

支持 WRL 基础结构,不应在代码中直接使用。

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

参数

index
指向包含从零开始的索引值的字段的指针。

iids
接口 ID 的数组。

注解

Base 的接口 ID 分配给索引参数指定的数组元素。

与此 API 的名称相反,仅修改了一个数组元素;而不是整个数组。

有关 Base 的详细信息,请参阅公共 Typedef 部分。

InterfaceTraits::IidCount

支持 WRL 基础结构,不应在代码中直接使用。

static const unsigned long IidCount = 1;

备注

保存与当前 InterfaceTraits 对象关联的接口 ID 数。

InterfaceTraits::Verify

支持 WRL 基础结构,不应在代码中直接使用。

__forceinline static void Verify();

备注

验证是否正确派生了 Base

有关 Base 的详细信息,请参阅公共 Typedef 部分。