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
(必要)介面識別碼 0。
I1
(必要)介面識別碼 1。
I2
(選擇性)介面識別碼 2。
I3
(選擇性)介面識別碼 3。
I4
(選擇性)介面識別碼 4。
I5
(選擇性)介面識別碼 5。
I6
(選擇性)介面識別碼 6。
I7
(選擇性)介面識別碼 7。
I8
(選擇性)介面識別碼 8。
I9
(選擇性)介面識別碼 9。
DerivedType
衍生型別。
BaseType
衍生型別的基底型別。
hasImplements
布爾值,如果true
為 ,表示您無法將MixIn結構與未衍生自Implements結構的類別搭配使用。
成員
受保護的方法
名稱 | 描述 |
---|---|
ChainInterfaces::CanCastTo | 指出指定的介面識別碼是否可以轉換成範本參數所 ChainInterface 定義的每個特製化。 |
ChainInterfaces::CastToUnknown | 將I0 樣板參數所定義的型別介面指標轉換為的IUnknown 指標。 |
ChainInterfaces::FillArrayWithIid | 將I0 範本參數所定義的介面識別元儲存在指定介面標識子陣列中的指定位置。 |
ChainInterfaces::Verify | 確認樣本參數 I0 到 I9 定義的每個介面都繼承自 IUnknown 和/或 IInspectable ,而且 I0 繼承自 I1 到 I9。 |
受保護的常數
名稱 | 描述 |
---|---|
ChainInterfaces::IidCount | 範本參數 I0 到 I9所指定介面中包含的介面標識碼總數。 |
繼承階層架構
I0
ChainInterfaces
需求
標頭: implements.h
命名空間: Microsoft::WRL
ChainInterfaces::CanCastTo
指出指定的介面識別碼是否可以轉換成非預設範本參數所定義的每個特製化。
__forceinline bool CanCastTo(
REFIID riid,
_Deref_out_ void **ppv
);
參數
riid
介面識別碼。
ppv
成功轉換之最後一個介面標識碼的指標。
傳回值
true
如果所有轉換作業都成功,則為 ;否則為 false
。
ChainInterfaces::CastToUnknown
將I0 樣板參數所定義的型別介面指標轉換為的IUnknown
指標。
__forceinline IUnknown* CastToUnknown();
傳回值
的 IUnknown
指標。
ChainInterfaces::FillArrayWithIid
將I0 範本參數所定義的介面識別元儲存在指定介面標識子陣列中的指定位置。
__forceinline static void FillArrayWithIid(
_Inout_ unsigned long &index,
_In_ IID* iids
);
參數
index
指向 iids 陣列中索引值的指標。
iids
介面識別碼的陣列。
ChainInterfaces::IidCount
範本參數 I0 到 I9所指定介面中包含的介面標識碼總數。
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;
傳回值
介面標識碼的總數。
備註
需要範本參數 I0 和 I1 ,而參數 I2 到 I9 是選擇性的。 每個介面的 IID 計數通常是 1。
ChainInterfaces::Verify
確認樣本參數 I0 到 I9 定義的每個介面都繼承自 IUnknown
和/或 IInspectable
,而且 I0 繼承自 I1 到 I9。
WRL_NOTHROW __forceinline static void Verify();
備註
如果驗證作業失敗,就會 static_assert
發出描述失敗的錯誤訊息。
需要範本參數 I0 和 I1 ,而參數 I2 到 I9 是選擇性的。