Freigeben über


oleautomation-Attribut

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

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

Parameter

string-uuid

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

interface-attribute-list

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

Schnittstellenname

Gibt den Namen der Schnittstelle an.

Basisschnittstelle

Gibt den Namen einer Automatisierungsschnittstelle an, von der diese abgeleitete Schnittstelle Memberfunktionen, Statuscodes 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 automatisierungskompatibel sein, wie in der folgenden Tabelle aufgeführt.

Typ Beschreibung
boolean Datenelement, das den Wert VARIANT_TRUE oder VARIANT_FALSE aufweisen kann. Die Größe entspricht VARIANT_BOOL.
nicht signiertes Byte 8-Bit-Nicht signiertes Datenelement.
double 64-Bit IEEE-Gleitkommazahl.
schweben 32-Bit IEEE-Gleitkommazahl.
int Signierte ganze Zahl, deren Größe vom System abhängig ist. Auf 32-Bit-Plattformen behandelt MIDL int eine 32-Bit-Ganzzahl mit Vorzeichen.
lange 32-Bit-Ganzzahl mit Vorzeichen.
Kurz 16-Bit-Ganzzahl mit Vorzeichen.
BSTR Längepräfixzeichenfolge, wie im Automatisierungsthema BSTR beschrieben.
WÄHRUNG 8-Byte-, feste Gleitkommazahl.
DATUM 64-Bit-Gleitkommabruchzahl seit dem 30. Dezember 1899.
SCODE Bei integrierten 16-Bit-Systemen, die VT_ERROR entsprechen.
Typedef enummyenum Signierte ganze Zahl, deren Größe vom System abhä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 die IUnknown-Schnittstelle dargestellt werden.)
dispinterfaceTypename * Zeiger auf eine Schnittstelle, die von IDispatch (VT_DISPATCH) abgeleitet ist.
CoclassTypename * Zeiger auf einen Coclass-Namen (VT_UNKNOWN).
[oleautomation]Schnittstellentypname * 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-nicht signierte binäre ganze Zahl, die mit einer variablen Leistung von 10 skaliert wird. Ein Dezimaldatentyp, der eine Größe und eine Skalierung für eine Zahl (wie in Koordinaten) bereitstellt.

 

Ein Parameter ist mit Automatisierung kompatibel, wenn es sich bei seinem Typ um einen automatisierungskompatiblen Typ, einen Zeiger auf einen automatisierungskompatiblen Typ oder ein SAFEARRAY eines automatisierungskompatiblen Typs handelt.

Ein Rückgabetyp ist mit automatisierungskompatibel, wenn es sich bei seinem Typ um ein HRESULT, SCODE oder void handelt. MIDL erfordert jedoch, dass Schnittstellenmethoden HRESULT oder SCODE zurückgeben. Durch zurückgeben von void wird ein Compilerfehler generiert.

Ein Element ist mit automatisierungskompatibel, wenn der Rückgabetyp und alle zugehörigen Parameter automatisierungskompatibel sind.

Eine Schnittstelle ist mit automatisierungskompatibel, wenn sie von IDispatch oder IUnknown abgeleitet wird, das Attribut [oleautomation] aufweist und alle zugehörigen VTBL-Einträge automatisierungskompatibel sind. Bei 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.

Jede Dispinterface ist implizit automatisierungskompatibel. Daher sollten Sie das Attribut "[oleautomation]" nicht für "dispinterface" verwenden.

Das [oleautomation]- Attribut ist beim Kompilieren mit dem MIDL-Compiler /osf-Switch nicht verfügbar.

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

Siehe auch

IdL-Datei (Interface Definition)

Generieren einer Typbibliothek mit MIDL

ODL-Datei (Beispiel)

ODL-Dateisyntax

/Osf

Uuid