Compartilhar via


Implementa estrutura

Implementa QueryInterface e GetIid para as interfaces especificadas.

Sintaxe

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;

Parâmetros

I0
A ID do ordinal zero. (Obrigatório)

I1
A ID da primeira interface. (Opcional)

I2
A segunda ID da interface. (Opcional)

I3
A terceira ID da interface. (Opcional)

I4
A quarta ID da interface. (Opcional)

I5
A quinta ID da interface. (Opcional)

I6
A sexta ID da interface. (Opcional)

I7
A sétima ID da interface. (Opcional)

I8
A oitava ID da interface. (Opcional)

I9
A nona ID da interface. (Opcional)

sinalizadores
Sinalizadores de configuração para a classe. Uma ou mais enumerações RuntimeClassType especificadas em uma estrutura RuntimeClassFlags.

Comentários

Deriva da lista de interfaces especificadas e implementa modelos auxiliares para QueryInterface e GetIid.

Cada parâmetro de interface de I0 a I9 deve derivar do IUnknown, IInspectable ou do modelo ChainInterfaces. O parâmetro flags determina se o suporte é gerado para IUnknown ou IInspectable.

Membros

Typedefs públicos

Nome Descrição
ClassFlags Um sinônimo de RuntimeClassFlags<WinRt>.

Métodos protegidos

Nome Descrição
Implements::CanCastTo Obtém um ponteiro para a interface especificada.
Implements::CastToUnknown Obtém um ponteiro para a interface subjacente IUnknown.
Implements::FillArrayWithIid Insere a ID da interface especificada pelo parâmetro de modelo de zero atual no elemento de matriz especificado.

Constantes protegidas

Nome Descrição
Implements::IidCount Contém o número de IDs de interface implementadas.

Hierarquia de herança

I0

ChainInterfaces

I0

ImplementsBase

ImplementsHelper

Implements

Requisitos

Cabeçalho: implements.h

Namespace: Microsoft::WRL

Implements::CanCastTo

Obtém um ponteiro para a interface especificada.

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

Parâmetros

riid
Uma referência para uma ID de interface.

ppv
Se tiver êxito, um ponteiro para a interface especificada por riid.

Valor de retorno

S_OK se tiver êxito; caso contrário, um HRESULT que indica o erro, como E_NOINTERFACE.

Comentários

Essa é uma função auxiliar interna que executa uma operação QueryInterface.

Implements::CastToUnknown

Obtém um ponteiro para a interface subjacente IUnknown.

__forceinline IUnknown* CastToUnknown();

Valor de retorno

Essa operação é sempre bem-sucedida, e retorna o ponteiro IUnknown.

Comentários

Função auxiliar interna.

Implements::FillArrayWithIid

Insere a ID da interface especificada pelo parâmetro de modelo de zero atual no elemento de matriz especificado.

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

Parâmetros

index
Um índice baseado em zero que indica o elemento de matriz inicial para essa operação. Quando essa operação for concluída, o índice será incrementado em 1.

iids
Uma matriz do tipo IID.

Comentários

Função auxiliar interna.

Implements::IidCount

Contém o número de IDs de interface implementadas.

static const unsigned long IidCount;