атрибут oleautomation

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

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

Параметры

string-uuid

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

interface-attribute-list

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

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

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

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

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

Замечания

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

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

 

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

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

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

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

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

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

Флаги

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