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 | Проверяет, что каждый интерфейс, определенный параметрами шаблона I0–I9, наследуется от 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 , а параметры I2 – I9 являются необязательными. Число IID каждого интерфейса обычно равно 1.
ChainInterfaces::Verify
Проверяет, что каждый интерфейс, определенный параметрами шаблона I0–I9, наследуется от IUnknown
I1 до I9 и (или) IInspectable
и что I0 наследуется от I1 до I9.
WRL_NOTHROW __forceinline static void Verify();
Замечания
Если операция проверки завершается ошибкой, static_assert
выдает сообщение об ошибке с описанием причины.
Необходимы параметры шаблона I0 и I1 , а параметры I2 – I9 являются необязательными.