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.
}
См. также раздел