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