oleautomation (atributo)

El atributo oleautomation indica que una interfaz es compatible con Automation.

[ 
    oleautomation, 
    uuid(string-uuid)
    [ , interface-attribute-list] 
] 
interface interface-name : base-interface
{
    ...
}

Parámetros

string-uuid

Especifica una cadena UUID generada por la utilidad Uuidgen.

interface-attribute-list

Especifica otros atributos que se aplican a la interfaz en su conjunto.

interface-name

Especifica el nombre de la interfaz.

interfaz base

Especifica el nombre de una interfaz de Automation de la que esta interfaz derivada hereda funciones miembro, códigos de estado y atributos de interfaz. Todas las interfaces de Automation se derivan de IUnknown o IDispatch.

Observaciones

Los parámetros y los tipos devueltos especificados para los miembros de una interfaz [oleautomation] deben ser compatibles con Automation, como se muestra en la tabla siguiente.

Tipo Descripción
boolean Elemento de datos que puede tener el valor VARIANT_TRUE o VARIANT_FALSE. El tamaño corresponde a VARIANT_BOOL.
unsigned char Elemento de datos sin signo de 8 bits.
double Número de punto flotante IEEE de 64 bits.
float Número de punto flotante IEEE de 32 bits.
int Entero con signo, cuyo tamaño depende del sistema. En plataformas de 32 bits, MIDL trata int como un entero de 32 bits con signo.
long Entero con signo de 32 bits.
short Entero de 16 bits con signo.
BSTR Cadena con prefijo de longitud, como se describe en el tema de Automation BSTR.
CURRENCY Número fijo de punto flotante de 8 bytes.
DATE Número fraccional de punto flotante de 64 bits desde el 30 de diciembre de 1899.
SCODE Para sistemas de 16 bits: tipo de error integrado que corresponde a VT_ERROR.
Enumeración typedef  myenum Entero con signo, cuyo tamaño depende del sistema.
Interfaz IDispatch * Puntero a la interfaz IDispatch (VT_DISPATCH).
Interfaz IUnknown * Puntero a una interfaz que no deriva de IDispatch (VT_UNKNOWN). (Cualquier interfaz OLE se puede representar mediante su interfaz IUnknown ).
Dispinterface  Typename * Puntero a una interfaz derivada de IDispatch (VT_DISPATCH).
Coclase  Typename * Puntero a un nombre de coclase (VT_UNKNOWN).
[oleautomation] interfaz  Typename * Puntero a una interfaz que deriva de IUnknown.
SAFEARRAY(TypeName) TypeName es cualquiera de los tipos anteriores. Matriz de estos tipos.
Typename* TypeName es cualquiera de los tipos anteriores. Puntero a un tipo.
Decimal Entero binario sin signo de 96 bits escalado por una potencia variable de 10. Tipo de datos decimal que proporciona un tamaño y una escala para un número (como en coordenadas).

 

Un parámetro es compatible con Automation si su tipo es un tipo compatible con Automation, un puntero a un tipo compatible con Automation o SAFEARRAY de un tipo compatible con Automation.

Un tipo de valor devuelto es compatible con Automation si su tipo es HRESULT, SCODE o void. Sin embargo, MIDL requiere que los métodos de interfaz devuelvan HRESULT o SCODE. La devolución de void genera un error del compilador.

Un miembro es compatible con Automation si su tipo de valor devuelto y todos sus parámetros son compatibles con Automation.

Una interfaz es compatible con Automation si se deriva de IDispatch o IUnknown, tiene el atributo [oleautomation] y todas sus entradas VTBL son compatibles con Automation. Para las plataformas de 32 bits, la convención de llamada para todos los métodos de la interfaz debe ser STDCALL. Para los sistemas de 16 bits, todos los métodos deben tener la convención de llamada CDECL.

Cada dispinterface es implícitamente compatible con Automation. Por lo tanto, no debe usar el atributo [oleautomation] en dispinterface.

El atributo [oleautomation] no está disponible al compilar con el modificador /osf del compilador MIDL.

Marcas

TYPEFLAG_FOLEAUTOMATION

Ejemplos

library Hello
{
    importlib("stdole32.tlb");
    [
        uuid(12345678-1234-1234-1234-123456789ABC),
        helpstring("Application object for the Hello application."),
        oleautomation,
        dual
    ]
    interface IHello : IDispatch
    {
        // Interface definition statements.
    }

    // Other library definition statements.
}

Vea también

Archivo de definición de interfaz (IDL)

Generación de una biblioteca de tipos con MIDL

Ejemplo de archivo ODL

Sintaxis de archivo ODL

/Osf

uuid