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
場合、Implements 構造体から派生しないクラスで MixIn 構造体を使用できないことを意味するブール値。
メンバー
保護メソッド
名前 | 説明 |
---|---|
ChainInterfaces::CanCastTo | 指定したインターフェイス ID を ChainInterface テンプレート パラメーターで定義された各特殊化にキャストできるかどうかを示します。 |
ChainInterfaces::CastToUnknown | I0 テンプレート パラメーターで定義された型のインターフェイス ポインターを IUnknown へのポインターにキャストします。 |
ChainInterfaces::FillArrayWithIid | I0 テンプレート パラメーターで定義されたインターフェイス ID をインターフェイス ID の指定した配列の指定した位置に格納します。 |
ChainInterfaces::Verify | テンプレート パラメーター I0 から I9 で定義された各インターフェイスが、IUnknown 、IInspectable 、またはその両方を継承していることと、I0 が I1 から I9 を継承していることを確認します。 |
保護された定数
名前 | 説明 |
---|---|
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
);
パラメーター
インデックス
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 で定義された各インターフェイスが、IUnknown
、IInspectable
、またはその両方を継承していることと、I0 が I1 から I9 を継承していることを確認します。
WRL_NOTHROW __forceinline static void Verify();
解説
検証操作に失敗した場合は、static_assert
から失敗を説明するエラー メッセージが出力されます。
テンプレート パラメーター I0 と I1 は必須です。パラメーター I2 から I9 は省略可能です。