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


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 должен быть производным от IInspectableIUnknownшаблона 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;