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
对于 RuntimeClass
、Implements
和 ChainInterfaces
,为不在受支持的接口 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 部分。