Implements 構造体
指定されたインターフェイスの QueryInterface
と GetIid
を実装します。
構文
template <
typename I0,
typename I1 = Details::Nil,
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 __declspec(novtable) Implements :
Details::ImplementsHelper<
RuntimeClassFlags<WinRt>,
typename Details::InterfaceListHelper<
I0, I1, I2, I3, I4, I5, I6, I7, I8, I9
>::TypeT
>,
Details::ImplementsBase;
template <
int flags,
typename I0,
typename I1,
typename I2,
typename I3,
typename I4,
typename I5,
typename I6,
typename I7,
typename I8
>
struct __declspec(novtable) Implements<
RuntimeClassFlags<flags>,
I0, I1, I2, I3, I4, I5, I6, I7, I8> :
Details::ImplementsHelper<
RuntimeClassFlags<flags>,
typename Details::InterfaceListHelper<
I0, I1, I2, I3, I4, I5, I6, I7, I8
>::TypeT
>,
Details::ImplementsBase;
パラメーター
I0
0 番目のインターフェイス ID です (必須)
I1
1 番目のインターフェイス ID です (省略可能)
I2
2 番目のインターフェイス ID です (省略可能)
I3
3 番目のインターフェイス ID です (省略可能)
I4
4 番目のインターフェイス ID です (省略可能)
I5
5 番目のインターフェイス ID です (省略可能)
I6
6 番目のインターフェイス ID です (省略可能)
I7
7 番目のインターフェイス ID です (省略可能)
I8
8 番目のインターフェイス ID です (省略可能)
I9
9 番目のインターフェイス ID です (省略可能)
flags
クラスの構成フラグ。 RuntimeClassFlags 構造体で指定された 1 つ以上の RuntimeClassType 列挙体。
解説
指定したインターフェイスの一覧から派生し、QueryInterface
と GetIid
のヘルパー テンプレートを実装します。
各 I0 から I9 のインターフェイス パラメーターは IUnknown
、IInspectable
、または ChainInterfaces テンプレートから派生する必要があります。 flags パラメーターは、IUnknown
または IInspectable
のサポートが生成されるかどうかを決定します。
メンバー
パブリック typedef
名前 | 説明 |
---|---|
ClassFlags |
RuntimeClassFlags<WinRt> と同義。 |
保護メソッド
名前 | 説明 |
---|---|
Implements::CanCastTo | 指定したインターフェイスへのポインターを取得します。 |
Implements::CastToUnknown | 基になる IUnknown インターフェイスへのポインターを取得します。 |
Implements::FillArrayWithIid | 現在の 0 番目のテンプレート パラメーターで指定されたインターフェイス ID を、指定した配列要素に挿入します。 |
保護された定数
名前 | 説明 |
---|---|
Implements::IidCount | 実装されたインターフェイス ID の数を保持します。 |
継承階層
I0
ChainInterfaces
I0
ImplementsBase
ImplementsHelper
Implements
要件
ヘッダー: implements.h
名前空間: Microsoft::WRL
Implements::CanCastTo
指定したインターフェイスへのポインターを取得します。
__forceinline HRESULT CanCastTo(
REFIID riid,
_Deref_out_ void **ppv
);
パラメーター
riid
インターフェイス ID に対する参照。
ppv
成功した場合は、riid によって指定されるインターフェイスへのポインター。
戻り値
成功した場合は S_OK、そうでない場合はエラーを示す HRESULT (例: E_NOINTERFACE)。
解説
これは、QueryInterface 操作を実行する内部ヘルパー関数です。
Implements::CastToUnknown
基になる IUnknown
インターフェイスへのポインターを取得します。
__forceinline IUnknown* CastToUnknown();
戻り値
この操作は常に成功し、IUnknown
ポインターを返します。
解説
内部ヘルパー関数。
Implements::FillArrayWithIid
現在の 0 番目のテンプレート パラメーターで指定されたインターフェイス ID を、指定した配列要素に挿入します。
__forceinline static void FillArrayWithIid(
unsigned long &index,
_In_ IID* iids
);
パラメーター
インデックス
この操作の開始配列要素を示す 0 から始まるインデックス。 この操作が完了すると、index は 1 ずつインクリメントされます。
iids
IID 型の配列。
解説
内部ヘルパー関数。
Implements::IidCount
実装されたインターフェイス ID の数を保持します。
static const unsigned long IidCount;