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 vom Uuidgen-Hilfsprogramm generierte UUID-Zeichenfolge an.

interface-attribute-list

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

Schnittstellenname

Gibt den Namen der Schnittstelle an.

Basisschnittstelle

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

Bemerkungen

Die für die Member einer [ ] oleautomation-Schnittstelle angegebenen Parameter und Rückgabetypen 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 Ganze Zahl 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 8-Byte, feste Gleitkommazahl.
DATE 64-Bit-Gleitkommabruchzahl von Tagen seit dem 30. Dezember 1899.
SCODE Für 16-Bit-Systeme– integrierter Fehlertyp, der VT ERROR _ entspricht.
Typedef-Enum  myenum Ganze Zahl 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) ableitung. (Jede OLE-Schnittstelle kann durch ihre IUnknown-Schnittstelle dargestellt werden.)
dispinterface Typname * Zeiger auf eine schnittstelle, die von IDispatch (VT _ DISPATCH) abgeleitet ist.
Co-Klasse Typname * Zeiger auf einen Co-Klasse-Namen (VT _ UNKNOWN).
[ oleautomation ] interface  Typename * Zeiger auf eine Schnittstelle, die von IUnknown ableitung.
SAFEARRAY(TypeName) TypeName ist einer der oben genannten Typen. Array dieser Typen.
*TypeName * _ _TypeName* ist einer der oben genannten Typen. Zeiger auf einen Typ.
Dezimal 96-Bit-Binärzahl ohne Vorzeichen, skaliert mit einer Variablenleistung von 10. Ein dezimaler Datentyp, der eine Größe und eine Skala für eine Zahl (wie in Koordinaten) bietet.

Ein Parameter ist mit Automation kompatibel, wenn sein Typ ein mit 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 HRESULT, SCODE oder void ist. MidL erfordert jedoch, dass Schnittstellenmethoden entweder HRESULT oder SCODE zurückgeben. Die Rückgabe von void generiert einen Compilerfehler.

Ein Member ist mit Automation kompatibel, wenn der Rückgabetyp und alle Parameter automationkompatibel sind.

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

Jede Disp-Interface ist implizit automatisierungskompatibel. Daher sollten Sie das [ ] oleautomation-Attribut nicht für Dispinterface verwenden.

Das [ ] oleautomation-Attribut ist nicht verfügbar, wenn Sie mit dem MIDL-Compilerschalter /osf 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