次の方法で共有


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 の場合、サポートされているインターフェイスの一覧に含まれることのないインターフェイス。

解説

インターフェイスの一般的な特性を実装します。

2 番目のテンプレートは、クロークされたインターフェイスを特殊化したものです。 3 番目のテンプレートは、Nil パラメーターを特殊化したものです。

メンバー

パブリック typedef

名前 説明
Base I0 テンプレート パラメーターのシノニム。

パブリック メソッド

名前 説明
InterfaceTraits::CanCastTo 指定したポインターを Base へのポインターにキャストできるかどうかを示します。
InterfaceTraits::CastToBase 指定したポインターを Base へのポインターにキャストします。
InterfaceTraits::CastToUnknown 指定したポインターを IUnknown へのポインターにキャストします。
InterfaceTraits::FillArrayWithIid Base のインターフェイス ID を、index 引数で指定された配列要素に割り当てます。
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 で指定されたインターフェイスになります。 それ以外の場合、ppvnullptr に設定されます。

戻り値

この操作が成功した場合は true になり、ptrBase へのポインターにキャストされます。それ以外の場合は、false になります。

解説

指定したポインターを Base へのポインターにキャストできるかどうかを示します。

Base の詳細については、「Public Typedefs」のセクションを参照してください。

InterfaceTraits::CastToBase

WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。

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

パラメーター

T
パラメーター ptr の型。

ptr
T へのポインター。

戻り値

Base を指すポインターです。

解説

指定したポインターを Base へのポインターにキャストします。

Base の詳細については、「Public Typedefs」のセクションを参照してください。

InterfaceTraits::CastToUnknown

WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。

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

パラメーター

T
パラメーター ptr の型。

ptr
T へのポインター。

戻り値

Base の派生元の IUnknown へのポインター。

解説

指定したポインターを IUnknown へのポインターにキャストします。

Base の詳細については、「Public Typedefs」のセクションを参照してください。

InterfaceTraits::FillArrayWithIid

WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。

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

パラメーター

index
0 から始まるインデックス値が含まれるフィールドへのポインター。

iids
インターフェイス ID の配列。

解説

Base のインターフェイス ID を、index 引数で指定された配列要素に割り当てます。

この API の名前に反して、変更されるのは配列全体ではなく、1 つの配列要素のみです。

Base の詳細については、「Public Typedefs」のセクションを参照してください。

InterfaceTraits::IidCount

WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。

static const unsigned long IidCount = 1;

解説

現在の InterfaceTraits オブジェクトに関連付けられているインターフェイス ID の数を保持します。

InterfaceTraits::Verify

WRL インフラストラクチャをサポートします。コードから直接使用するためのものではありません。

__forceinline static void Verify();

解説

Base が正しく派生されていることを確認します。

Base の詳細については、「Public Typedefs」のセクションを参照してください。