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
Идентификатор интерфейса нуля. (обязательный параметр)
I1
Первый идентификатор интерфейса. (Необязательно)
I2
Второй идентификатор интерфейса. (Необязательно)
I3
Третий идентификатор интерфейса. (Необязательно)
I4
Четвертый идентификатор интерфейса. (Необязательно)
I5
Идентификатор пятого интерфейса. (Необязательно)
I6
Шестой идентификатор интерфейса. (Необязательно)
I7
Идентификатор седьмого интерфейса. (Необязательно)
I8
Восьмой идентификатор интерфейса. (Необязательно)
I9
Девятый идентификатор интерфейса. (Необязательно)
flags
Флаги конфигурации для класса. Одно или несколько перечислений RuntimeClassType , указанных в структуре RuntimeClassFlags .
Замечания
Производный от списка указанных интерфейсов и реализует вспомогательные шаблоны для QueryInterface
и GetIid
.
Каждый параметр интерфейса I0 через I9 должен быть производным от IInspectable
IUnknown
шаблона ChainInterfaces. Параметр флагов определяет, создается ли поддержка для IUnknown
или IInspectable
.
Участники
Общедоступные определения типов
Имя | Описание |
---|---|
ClassFlags |
Синоним для RuntimeClassFlags<WinRt> . |
Защищенные методы
Имя | Описание |
---|---|
Реализация::CanCastTo | Возвращает указатель на указанный интерфейс. |
Реализует::CastToUnknown | Возвращает указатель на базовый IUnknown интерфейс. |
Реализация::FillArrayWithIid | Вставляет идентификатор интерфейса, указанный текущим параметром шаблона нуля, в указанный элемент массива. |
Защищенные константы
Имя | Описание |
---|---|
Реализация::IidCount | Содержит количество идентификаторов реализованных интерфейсов. |
Иерархия наследования
I0
ChainInterfaces
I0
ImplementsBase
ImplementsHelper
Implements
Требования
Заголовок: implements.h
Пространство имен: Microsoft::WRL
Реализация::CanCastTo
Возвращает указатель на указанный интерфейс.
__forceinline HRESULT CanCastTo(
REFIID riid,
_Deref_out_ void **ppv
);
Параметры
riid
Ссылка на идентификатор интерфейса.
ppv
В случае успешного выполнения указатель на интерфейс, указанный riid.
Возвращаемое значение
S_OK в случае успешного выполнения; в противном случае — HRESULT, указывающее ошибку, например E_NOINTERFACE.
Замечания
Это внутренняя вспомогательной функцией, которая выполняет операцию QueryInterface.
Реализует::CastToUnknown
Возвращает указатель на базовый IUnknown
интерфейс.
__forceinline IUnknown* CastToUnknown();
Возвращаемое значение
Эта операция всегда выполняется успешно и возвращает IUnknown
указатель.
Замечания
Внутренняя вспомогательная функция.
Реализация::FillArrayWithIid
Вставляет идентификатор интерфейса, указанный текущим параметром шаблона нуля, в указанный элемент массива.
__forceinline static void FillArrayWithIid(
unsigned long &index,
_In_ IID* iids
);
Параметры
index
Отсчитываемый от нуля индекс, указывающий начальный элемент массива для этой операции. По завершении этой операции индекс увеличивается на 1.
iids
Массив типа IID.
Замечания
Внутренняя вспомогательная функция.
Реализация::IidCount
Содержит количество идентификаторов реализованных интерфейсов.
static const unsigned long IidCount;