Compartilhar via


Estrutura ChainInterfaces

Especifica funções de verificação e inicialização que podem ser aplicadas a um conjunto de IDs de interface.

Sintaxe

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

Parâmetros

I0
(Obrigatório) ID da interface 0.

I1
(Obrigatório) ID da interface 1.

I2
(Opcional) ID da interface 2.

I3
(Opcional) ID da interface 3.

I4
(Opcional) ID da interface 4.

I5
(Opcional) ID da interface 5.

I6
(Opcional) ID da interface 6.

I7
(Opcional) ID da interface 7.

I8
(Opcional) ID da interface 8.

I9
(Opcional) ID da interface 9.

DerivedType
Um tipo derivado.

BaseType
O tipo base de um tipo derivado.

hasImplements
Um valor booliano que, se true, significa que você não pode usar uma estrutura MixIn com uma classe que não deriva da estrutura Implements .

Membros

Métodos protegidos

Nome Descrição
ChainInterfaces::CanCastTo Indica se a ID da interface especificada pode ser convertida em cada uma das especializações definidas pelos parâmetros de modelo ChainInterface.
ChainInterfaces::CastToUnknown Converte o ponteiro da interface do tipo definido pelo parâmetro de modelo I0 para um ponteiro para IUnknown.
ChainInterfaces::FillArrayWithIid Armazena a ID da interface definida pelo parâmetro de modelo I0 em um local especificado em uma matriz especificada de IDs de interface.
ChainInterfaces::Verify Verifica se cada interface definida pelos parâmetros de modelo de I0 a I9 herda de IUnknown e/ou IInspectable, e que I0 herda de I1 a I9.

Constantes protegidas

Nome Descrição
ChainInterfaces::IidCount O número total de IDs de interface contidas nas interfaces especificadas pelos parâmetros de modelo I0 a I9.

Hierarquia de herança

I0

ChainInterfaces

Requisitos

Cabeçalho: implements.h

Namespace: Microsoft::WRL

ChainInterfaces::CanCastTo

Indica se a ID da interface especificada pode ser convertida em cada uma das especializações definidas pelos parâmetros de modelo não padrão.

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

Parâmetros

riid
Um ID de interface.

ppv
Um ponteiro para a última ID da interface que foi convertida com êxito.

Valor de retorno

true se todas as operações de conversão tiverem êxito; caso contrário, false.

ChainInterfaces::CastToUnknown

Converte o ponteiro da interface do tipo definido pelo parâmetro de modelo I0 para um ponteiro para IUnknown.

__forceinline IUnknown* CastToUnknown();

Valor de retorno

Um ponteiro para IUnknown.

ChainInterfaces::FillArrayWithIid

Armazena a ID da interface definida pelo parâmetro de modelo I0 em um local especificado em uma matriz especificada de IDs de interface.

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

Parâmetros

index
Ponteiro para um valor de índice na matriz iids.

iids
Uma matriz de IDs de interface.

ChainInterfaces::IidCount

O número total de IDs de interface contidas nas interfaces especificadas pelos parâmetros de modelo I0 a 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;

Valor de retorno

O número total de IDs de interface.

Comentários

Os parâmetros de modelo I0 e I1 são necessários e os parâmetros I2 a I9 são opcionais. A contagem de IID de cada interface normalmente é 1.

ChainInterfaces::Verify

Verifica se cada interface definida pelos parâmetros de modelo de I0 a I9 herda de IUnknown e/ou IInspectable, e que I0 herda de I1 a I9.

WRL_NOTHROW __forceinline static void Verify();

Comentários

Se a operação de verificação falhar, uma mensagem de erro será emitida por static_assert descrevendo a falha.

Os parâmetros de modelo I0 e I1 são necessários e os parâmetros I2 a I9 são opcionais.