oleautomation - атрибут

Атрибут oleautomation указывает, что интерфейс совместим со службой автоматизации.

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

Параметры

string-uuid

Указывает строку UUID, созданную служебной программой Uuidgen.

interface-attribute-list

Указывает другие атрибуты, которые применяются к интерфейсу в целом.

имя интерфейса

Указывает имя интерфейса.

базовый интерфейс

Указывает имя интерфейса автоматизации, от которого этот производный интерфейс наследует функции-члены, коды состояния и атрибуты интерфейса. Все интерфейсы автоматизации являются производными от IUnknown или IDispatch.

Комментарии

Параметры и типы возвращаемых значений, указанные для членов интерфейса [oleautomation] , должны быть совместимы с автоматизацией, как указано в следующей таблице.

Тип Описание
boolean Элемент данных, который может иметь значение VARIANT_TRUE или VARIANT_FALSE. Размер соответствует VARIANT_BOOL.
unsigned char 8-разрядный элемент данных без знака.
double 64-разрядное число IEEE с плавающей запятой.
float 32-разрядное число IEEE с плавающей запятой.
int Целое число со знаком, размер которого зависит от системы. На 32-разрядных платформах MIDL обрабатывает int как 32-разрядное целое число со знаком.
long 32-разрядное целое число со знаком.
short 16-разрядное целое число со знаком.
BSTR Строка с префиксом длины, как описано в разделе автоматизации BSTR.
CURRENCY 8-байтовое число с фиксированной запятой.
DATE 64-разрядное число дней с плавающей запятой с 30 декабря 1899 г.
SCODE Для 16-разрядных систем — встроенный тип ошибки, соответствующий VT_ERROR.
Перечисление typedef  myenum Целое число со знаком, размер которого зависит от системы.
Интерфейс IDispatch * Указатель на интерфейс IDispatch (VT_DISPATCH).
Интерфейс IUnknown * Указатель на интерфейс, который не является производным от IDispatch (VT_UNKNOWN). (Любой интерфейс OLE может быть представлен его интерфейсом IUnknown .)
dispinterface  Typename * Указатель на интерфейс, производный от IDispatch (VT_DISPATCH).
Coclass  Typename * Указатель на имя совместного класса (VT_UNKNOWN).
Интерфейс [oleautomation] Â Typename * Указатель на интерфейс, производный от IUnknown.
SAFEARRAY(TypeName) TypeName — это любой из указанных выше типов. Массив этих типов.
Typename* TypeName — это любой из указанных выше типов. Указатель на тип.
Десятичное число 96-разрядное двоичное целое число без знака, масштабируемое переменной мощностью 10. Десятичный тип данных, который предоставляет размер и масштаб для числа (как в координатах).

 

Параметр совместим со службой автоматизации, если его тип является типом, совместимым с автоматизацией, указателем на тип, совместимый с автоматизацией, или safeARRAY типа, совместимого со службой автоматизации.

Возвращаемый тип совместим со службой автоматизации, если его типом является HRESULT, SCODE или void. Однако для MIDL требуется, чтобы методы интерфейса возвращали HRESULT или SCODE. При возврате void возникает ошибка компилятора.

Элемент совместим со службой автоматизации, если его тип возвращаемого значения и все его параметры совместимы со службой автоматизации.

Интерфейс совместим со службой автоматизации, если он является производным от IDispatch или IUnknown, у него есть атрибут [oleautomation] , и все его записи ВМВL совместимы со службой автоматизации. Для 32-разрядных платформ соглашение о вызовах для всех методов в интерфейсе должно иметь значение STDCALL. Для 16-разрядных систем все методы должны иметь соглашение о вызовах CDECL.

Каждый dispinterface неявно совместим с автоматизацией. Поэтому не следует использовать атрибут [oleautomation] в dispinterface.

Атрибут [oleautomation] недоступен при компиляции с помощью параметра / osf компилятора MIDL.

Флаги

TYPEFLAG_FOLEAUTOMATION

Примеры

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

См. также раздел

Файл определения интерфейса (IDL)

Создание библиотеки типов с помощью MIDL

Пример ODL-файла

Синтаксис ODL-файла

/Osf

uuid