interface - атрибут
В ключевое слово интерфейса указывается имя интерфейса. Имя интерфейса должно быть указано как в IDL-файле, так и в ACF.
[
interface-attribute-list
]
interface interface-name [ : base-interface ]
{
}
typedef interface interface-name declarator-list
Параметры
-
interface-attribute-list
-
Задает атрибуты, которые применяются к интерфейсу в целом. Допустимые атрибуты интерфейса для IDL-файла включают [endpoint], [local], [object], [pointer_default], [uuid] и [version]. Допустимые атрибуты интерфейса для ACF включают [encode], [decode], [auto_handle] или [implicit_handle], а также [code] или [nocode].
-
имя интерфейса
-
Указывает имя интерфейса. Имя интерфейса должно быть уникальным и начинаться с алфавита или символа подчеркивания.
-
базовый интерфейс
-
Указывает имя интерфейса, от которого этот производный интерфейс наследует функции-члены, коды состояния и атрибуты интерфейса. Производный интерфейс не наследует определения типов. Для этого используйте ключевое слово импорта IDL-файла базового интерфейса.
-
declarator-list
-
Указывает стандартные деклараторы C, такие как идентификаторы, деклараторы указателей и деклараторы массива. Дополнительные сведения см. в разделах Массив и Sized-Pointer Атрибуты, массивы и массивы и указатели. Список деклараторов состоит из одного или нескольких деклараторов, разделенных запятыми.
Комментарии
Имена интерфейсов в IDL-файле и ACF должны быть одинаковыми, за исключением случаев, когда используется параметр компилятора MIDL /acf.
Имя интерфейса формирует первую часть имени структур данных обработчика интерфейса, которые являются параметрами для функций среды выполнения RPC. Дополнительные сведения см. в разделе RPC_IF_HANDLE.
Если заголовок интерфейса содержит атрибут [object] для обозначения COM-интерфейса, он должен также включать атрибут [uuid] и указывать базовый COM-интерфейс, от которого он является производным. Дополнительные сведения о COM-интерфейсах см. в разделе [объект].
Для определения типа данных интерфейса можно также использовать ключевое слово с ключевое слово typedef.
Примеры
/* use of interface keyword in IDL file for an RPC interface */
[
uuid (00000000-0000-0000-0000-000000000000),
version (1.0)
]
interface remote_if_2
{
// Interface definition statements.
}
/* use of interface keyword in ACF for an RPC interface */
[
implicit_handle( handle_t xa_bhandle )
]
interface remote_if_2
{
// Attribute configuration statements.
}
/* use of interface keyword in IDL file for a COM interface */
[
object, uuid (00000000-0000-0000-0000-000000000000)
]
interface IDerivedInterface : IBaseInterface
{
import "base.idl"
Save();
}
/* use of interface keyword to define an interface pointer type */
typedef interface IStorage *LPSTORAGE;
См. также раздел