oleautomation-Attribut

Das oleautomation-Attribut gibt an, dass eine Schnittstelle mit Automation kompatibel ist.

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

Parameter

string-uuid

Gibt eine UUID-Zeichenfolge an, die vom Hilfsprogramm Uuidgen generiert wird.

interface-attribute-list

Gibt andere Attribute an, die für die Schnittstelle als Ganzes gelten.

Schnittstellenname

Gibt den Namen der Schnittstelle an.

base-interface

Gibt den Namen einer Automation-Schnittstelle an, von der diese abgeleitete Schnittstelle Memberfunktionen, status Codes und Schnittstellenattribute erbt. Alle Automatisierungsschnittstellen werden von IUnknown oder IDispatch abgeleitet.

Bemerkungen

Die Parameter und Rückgabetypen, die für die Member einer [oleautomation]- Schnittstelle angegeben sind, müssen Automation-kompatibel sein, wie in der folgenden Tabelle aufgeführt.

type BESCHREIBUNG
boolean Datenelement, das den Wert VARIANT_TRUE oder VARIANT_FALSE haben kann. Die Größe entspricht VARIANT_BOOL.
unsigned char 8-Bit-Datenelement ohne Vorzeichen.
double 64-Bit-IEEE-Gleitkommazahl.
float 32-Bit-IEEE-Gleitkommazahl.
int Ganzzahl mit Vorzeichen, deren Größe systemabhängig ist. Auf 32-Bit-Plattformen behandelt MIDL int als 32-Bit-Ganzzahl mit Vorzeichen.
long Ganze 32-Bit-Zahl mit Vorzeichen:
short 16-Bit-Ganzzahl mit Vorzeichen.
BSTR Zeichenfolge mit Längenpräfix, wie im Automation-Thema BSTR beschrieben.
CURRENCY Feste Gleitkommazahl mit 8 Byte.
DATE 64-Bit, Gleitkommabruchzahl der Tage seit dem 30. Dezember 1899.
SCODE Für 16-Bit-Systeme: integrierter Fehlertyp, der VT_ERROR entspricht.
Typedef-Enumeration  myenum Ganzzahl mit Vorzeichen, deren Größe systemabhängig ist.
Schnittstelle IDispatch * Zeiger auf die IDispatch-Schnittstelle (VT_DISPATCH).
Schnittstelle IUnknown * Zeiger auf eine Schnittstelle, die nicht von IDispatch (VT_UNKNOWN) abgeleitet ist. (Jede OLE-Schnittstelle kann durch ihre IUnknown-Schnittstelle dargestellt werden.)
Dispatchschnittstelle  Typname * Zeiger auf eine von IDispatch (VT_DISPATCH) abgeleitete Schnittstelle.
Co  Typname * Zeiger auf einen Co-Klassennamen (VT_UNKNOWN).
[oleautomation]-Schnittstelle  Typname * Zeiger auf eine Schnittstelle, die von IUnknown abgeleitet wird.
SAFEARRAY(TypeName) TypeName ist einer der oben genannten Typen. Array dieser Typen.
Typename* TypeName ist einer der oben genannten Typen. Zeiger auf einen Typ.
Decimal 96-Bit-Ganzzahl ohne Vorzeichen, skaliert durch eine variable Leistung von 10. Ein Dezimaldatentyp, der eine Größe und eine Skalierung für eine Zahl (wie in Koordinaten) bereitstellt.

 

Ein Parameter ist mit Automation kompatibel, wenn sein Typ ein Automation-kompatibler Typ, ein Zeiger auf einen Automation-kompatiblen Typ oder ein SAFEARRAY eines Automation-kompatiblen Typs ist.

Ein Rückgabetyp ist mit Automation kompatibel, wenn sein Typ ein HRESULT, SCODE oder void ist. Midl erfordert jedoch, dass Schnittstellenmethoden entweder HRESULT oder SCODE zurückgeben. Beim Zurückgeben von void wird ein Compilerfehler generiert.

Ein Member ist mit Automation kompatibel, wenn sein Rückgabetyp und alle zugehörigen Parameter Automation-kompatibel sind.

Eine Schnittstelle ist mit Automation kompatibel, wenn sie von IDispatch oder IUnknown abgeleitet wird, über das Attribut [oleautomation] verfügt und alle ihre VTBL-Einträge Automation-kompatibel sind. Für 32-Bit-Plattformen muss die Aufrufkonvention für alle Methoden in der Schnittstelle STDCALL sein. Für 16-Bit-Systeme müssen alle Methoden über die CDECL-Aufrufkonvention verfügen.

Jedes Dispinterface ist implizit mit Automation kompatibel. Daher sollten Sie das [oleautomation]- Attribut nicht auf dispinterface verwenden.

Das Attribut [oleautomation] ist nicht verfügbar, wenn Sie mit dem MIDL-Compiler /osf-Schalter kompilieren.

Flags

TYPEFLAG_FOLEAUTOMATION

Beispiele

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.
}

Weitere Informationen

IDL-Datei (Interface Definition)

Generieren einer Typbibliothek mit MIDL

ODL-Dateibeispiel

ODL-Dateisyntax

/Osf

UUID