ChainInterfaces — Struktura

Określa funkcje weryfikacji i inicjowania, które można zastosować do zestawu identyfikatorów interfejsu.

Składnia

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
>;

Parametry

I0
(Wymagane) Identyfikator interfejsu 0.

I1
(Wymagane) Identyfikator interfejsu 1.

I2
(Opcjonalnie) Identyfikator interfejsu 2.

I3
(Opcjonalnie) Identyfikator interfejsu 3.

I4
(Opcjonalnie) Identyfikator interfejsu 4.

I5
(Opcjonalnie) Identyfikator interfejsu 5.

I6
(Opcjonalnie) Identyfikator interfejsu 6.

I7
(Opcjonalnie) Identyfikator interfejsu 7.

I8
(Opcjonalnie) Identyfikator interfejsu 8.

I9
(Opcjonalnie) Identyfikator interfejsu 9.

Typ pochodny
Typ pochodny.

BaseType
Typ podstawowy typu pochodnego.

hasImplements
Wartość logiczna, która jeśli trueoznacza , że nie można użyć struktury MixIn z klasą, która nie pochodzi z struktury Implements .

Członkowie

Metody chronione

Nazwa/nazwisko opis
ChainInterfaces::CanCastTo Wskazuje, czy określony identyfikator interfejsu można rzutować do każdej specjalizacji zdefiniowanej przez parametry szablonu ChainInterface .
ChainInterfaces::CastToUnknown Rzutuje wskaźnik interfejsu typu zdefiniowanego przez parametr szablonu I0 na wskaźnik na IUnknown.
ChainInterfaces::FillArrayWithIid Przechowuje identyfikator interfejsu zdefiniowany przez parametr szablonu I0 do określonej lokalizacji w określonej tablicy identyfikatorów interfejsu.
ChainInterfaces::Verify Sprawdza, czy każdy interfejs zdefiniowany przez parametry szablonu I0 do I9 dziedziczy od IUnknown i/lub IInspectable, i0 dziedziczy od I1 do I9.

Stałe chronione

Nazwa/nazwisko opis
ChainInterfaces::IidCount Całkowita liczba identyfikatorów interfejsów zawartych w interfejsach określonych przez parametry szablonu od I0 do I9.

Hierarchia dziedziczenia

I0

ChainInterfaces

Wymagania

Nagłówek: implements.h

Przestrzeń nazw: Microsoft::WRL

ChainInterfaces::CanCastTo

Wskazuje, czy określony identyfikator interfejsu można rzutować do każdej specjalizacji zdefiniowanej przez parametry szablonu innego niż domyślne.

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

Parametry

Riid
Identyfikator interfejsu.

Ppv
Wskaźnik do ostatniego identyfikatora interfejsu, który został pomyślnie oddany.

Wartość zwracana

true jeśli wszystkie operacje rzutu zakończyły się pomyślnie; w przeciwnym razie, false.

ChainInterfaces::CastToUnknown

Rzutuje wskaźnik interfejsu typu zdefiniowanego przez parametr szablonu I0 na wskaźnik na IUnknown.

__forceinline IUnknown* CastToUnknown();

Wartość zwracana

Wskaźnik do IUnknown.

ChainInterfaces::FillArrayWithIid

Przechowuje identyfikator interfejsu zdefiniowany przez parametr szablonu I0 do określonej lokalizacji w określonej tablicy identyfikatorów interfejsu.

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

Parametry

Indeks
Wskaźnik do wartości indeksu w tablicy iids .

identyfikatory
Tablica identyfikatorów interfejsu.

ChainInterfaces::IidCount

Całkowita liczba identyfikatorów interfejsów zawartych w interfejsach określonych przez parametry szablonu od I0 do 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;

Wartość zwracana

Całkowita liczba identyfikatorów interfejsu.

Uwagi

Parametry szablonu I0 i I1 są wymagane, a parametry I2 do I9 są opcjonalne. Liczba identyfikatorów IID każdego interfejsu wynosi zwykle 1.

ChainInterfaces::Verify

Sprawdza, czy każdy interfejs zdefiniowany przez parametry szablonu I0 do I9 dziedziczy od IUnknown i/lub IInspectable, i0 dziedziczy od I1 do I9.

WRL_NOTHROW __forceinline static void Verify();

Uwagi

Jeśli operacja weryfikacji zakończy się niepowodzeniem, static_assert zostanie wyświetlony komunikat o błędzie opisujący błąd.

Parametry szablonu I0 i I1 są wymagane, a parametry I2 do I9 są opcjonalne.