Implements — Struktura

Implementuje QueryInterface i GetIid dla określonych interfejsów.

Składnia

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;

Parametry

I0
Identyfikator interfejsu zeroth. (Obowiązkowe)

I1
Pierwszy identyfikator interfejsu. (Opcjonalnie)

I2
Drugi identyfikator interfejsu. (Opcjonalnie)

I3
Trzeci identyfikator interfejsu. (Opcjonalnie)

I4
Czwarty identyfikator interfejsu. (Opcjonalnie)

I5
Piąty identyfikator interfejsu. (Opcjonalnie)

I6
Szósty identyfikator interfejsu. (Opcjonalnie)

I7
Siódmy identyfikator interfejsu. (Opcjonalnie)

I8
Ósmy identyfikator interfejsu. (Opcjonalnie)

I9
Dziewiąty identyfikator interfejsu. (Opcjonalnie)

Flagi
Flagi konfiguracji dla klasy. Co najmniej jeden wyliczenie RuntimeClassType określone w strukturze RuntimeClassFlags .

Uwagi

Pochodzi z listy określonych interfejsów i implementuje szablony pomocników dla elementów QueryInterface i GetIid.

Każdy parametr interfejsu I0 do I9 musi pochodzić z IUnknownszablonu , IInspectablelub ChainInterfaces. Parametr flags określa, czy obsługa jest generowana dla IUnknown programu , czy IInspectable.

Członkowie

Definicje typów publicznych

Nazwa/nazwisko opis
ClassFlags Synonim dla elementu RuntimeClassFlags<WinRt>.

Metody chronione

Nazwa/nazwisko opis
Implements::CanCastTo Pobiera wskaźnik do określonego interfejsu.
Implements::CastToUnknown Pobiera wskaźnik do bazowego IUnknown interfejsu.
Implements::FillArrayWithIid Wstawia identyfikator interfejsu określony przez bieżący parametr szablonu zeroth do określonego elementu tablicy.

Stałe chronione

Nazwa/nazwisko opis
Implements::IidCount Przechowuje liczbę zaimplementowanych identyfikatorów interfejsu.

Hierarchia dziedziczenia

I0

ChainInterfaces

I0

ImplementsBase

ImplementsHelper

Implements

Wymagania

Nagłówek: implements.h

Przestrzeń nazw: Microsoft::WRL

Implements::CanCastTo

Pobiera wskaźnik do określonego interfejsu.

__forceinline HRESULT CanCastTo(
   REFIID riid,
   _Deref_out_ void **ppv
);

Parametry

Riid
Odwołanie do identyfikatora interfejsu.

Ppv
W przypadku powodzenia wskaźnik do interfejsu określonego przez riid.

Wartość zwracana

S_OK w przypadku powodzenia; w przeciwnym razie HRESULT wskazujący błąd, taki jak E_NOINTERFACE.

Uwagi

Jest to wewnętrzna funkcja pomocnika, która wykonuje operację QueryInterface.

Implements::CastToUnknown

Pobiera wskaźnik do bazowego IUnknown interfejsu.

__forceinline IUnknown* CastToUnknown();

Wartość zwracana

Ta operacja zawsze kończy się powodzeniem i zwraca IUnknown wskaźnik.

Uwagi

Wewnętrzna funkcja pomocnika.

Implements::FillArrayWithIid

Wstawia identyfikator interfejsu określony przez bieżący parametr szablonu zeroth do określonego elementu tablicy.

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

Parametry

Indeks
Indeks oparty na zera, który wskazuje początkowy element tablicy dla tej operacji. Po zakończeniu tej operacji indeks jest zwiększany o 1.

identyfikatory
Tablica typu IID.

Uwagi

Wewnętrzna funkcja pomocnika.

Implements::IidCount

Przechowuje liczbę zaimplementowanych identyfikatorów interfejsu.

static const unsigned long IidCount;