Implements (estructura)

Implementa QueryInterface y GetIid para las interfaces especificadas.

Sintaxis

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
Identificador de interfaz cero. (Obligatorio)

I1
Primer identificador de interfaz. (Opcional)

I2
Segundo identificador de interfaz. (Opcional)

I3
Tercer identificador de interfaz. (Opcional)

I4
Cuarto identificador de interfaz. (Opcional)

I5
Quinto identificador de interfaz. (Opcional)

I6
Sexto identificador de interfaz. (Opcional)

I7
Séptimo identificador de interfaz. (Opcional)

I8
Octavo identificador de interfaz. (Opcional)

I9
Noveno identificador de interfaz. (Opcional)

flags
Marcas de configuración para la clase. Una o varias enumeraciones RuntimeClassType que se especifican en una estructura RuntimeClassFlags.

Comentarios

Se deriva de la lista de interfaces especificadas e implementa plantillas auxiliares para QueryInterface y GetIid.

Cada parámetro de interfaz I0 a I9 debe derivarse de IUnknown, IInspectable o de la plantilla ChainInterfaces. El parámetro flags determina si se genera compatibilidad para IUnknown o IInspectable.

Miembros

Definiciones de tipos públicas

Nombre Descripción
ClassFlags Sinónimo de RuntimeClassFlags<WinRt>.

Métodos protegidos

Nombre Descripción
Implements::CanCastTo Obtiene un puntero a la interfaz especificada.
Implements::CastToUnknown Obtiene un puntero a la interfaz IUnknown subyacente.
Implements::FillArrayWithIid Inserta el identificador de interfaz especificado por el parámetro de plantilla cero actual en el elemento de matriz especificado.

Constantes protegidas

Nombre Descripción
Implements::IidCount Contiene el número de identificadores de interfaz implementados.

Jerarquía de herencia

I0

ChainInterfaces

I0

ImplementsBase

ImplementsHelper

Implements

Requisitos

Encabezado: implements.h

Espacio de nombres: Microsoft::WRL

Implements::CanCastTo

Obtiene un puntero a la interfaz especificada.

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

Parámetros

riid
Referencia a un identificador de interfaz.

ppv
Si se ejecuta correctamente, un puntero a la interfaz especificada por riid.

Valor devuelto

S_OK si se realiza correctamente; de lo contrario, un HRESULT que indica el error, como E_NOINTERFACE.

Comentarios

Se trata de una función auxiliar interna que realiza una operación QueryInterface.

Implements::CastToUnknown

Obtiene un puntero a la interfaz IUnknown subyacente.

__forceinline IUnknown* CastToUnknown();

Valor devuelto

Esta operación siempre se realiza correctamente y devuelve el puntero IUnknown.

Comentarios

Función auxiliar interna.

Implements::FillArrayWithIid

Inserta el identificador de interfaz especificado por el parámetro de plantilla cero actual en el elemento de matriz especificado.

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

Parámetros

índice
Índice de base cero que indica el elemento de matriz inicial de esta operación. Cuando se completa esta operación, index se incrementa en 1.

iids
Matriz de tipo IID.

Comentarios

Función auxiliar interna.

Implements::IidCount

Contiene el número de identificadores de interfaz implementados.

static const unsigned long IidCount;