Поделиться через


ChainInterfaces - структура

Указывает функции проверки и инициализации, которые могут применяться к набору идентификаторов интерфейсов.

Синтаксис

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.

Производный тип
Производный тип.

BaseType
Базовый тип производного типа.

hasImplements
Логическое значение, которое, если true, означает, что нельзя использовать структуру MixIn с классом, который не является производным от структуры Implements .

Участники

Защищенные методы

Имя Описание
ChainInterfaces::CanCastTo Указывает, можно ли привести указанный идентификатор интерфейса к каждой специализации, определенной параметрами ChainInterface шаблона.
ChainInterfaces::CastToUnknown Приведение указателя интерфейса типа, определенного параметром шаблона I0 , к указателю IUnknown.
ChainInterfaces::FillArrayWithIid Сохраняет идентификатор интерфейса, определенный параметром шаблона I0 , в указанное расположение в указанном массиве идентификаторов интерфейса.
ChainInterfaces::Verify Проверяет, что каждый интерфейс, определенный параметрами шаблона I0I9, наследуется от IUnknown I1 до I9 и (или) 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 , а параметры I2I9 являются необязательными. Число IID каждого интерфейса обычно равно 1.

ChainInterfaces::Verify

Проверяет, что каждый интерфейс, определенный параметрами шаблона I0I9, наследуется от IUnknown I1 до I9 и (или) IInspectableи что I0 наследуется от I1 до I9.

WRL_NOTHROW __forceinline static void Verify();

Замечания

Если операция проверки завершается ошибкой, static_assert выдает сообщение об ошибке с описанием причины.

Необходимы параметры шаблона I0 и I1 , а параметры I2I9 являются необязательными.