local - атрибут
Атрибут [local] указывает компилятору MIDL, что интерфейс или функция не являются удаленными.
[
local
[, interface-attribute-list]
]
interface interface-name
{
}
[
object,
uuid(string-uuid),
local [, interface-attribute-list]
]
interface interface-name
{
}
[ local [, function-attribute-list] ] function-declarator ;
-
interface-attribute-list
-
Указывает другие атрибуты, которые применяются к интерфейсу в целом. Атрибуты [endpoint], [version] и [pointer_default] являются необязательными. При компиляции с параметром /app_config также может присутствовать [implicit_handle] или [auto_handle] . Разделяйте несколько атрибутов запятыми.
-
имя интерфейса
-
Указывает имя, по которому программные компоненты могут очертить интерфейс.
-
string-uuid
-
Указывает строку UUID, созданную служебной программой Uuidgen. Если вы не используете параметр компилятора MIDL /osf, строку UUID можно заключить в кавычки.
-
function-attribute-list
-
Задает ноль или несколько атрибутов, применяемых к функции. Допустимые атрибуты функции: [обратный вызов]; атрибут указателя [ссылка], [уникальный], или [ptr]; и атрибуты использования [string], [ignore] и [context_handle]. Разделяйте несколько атрибутов запятыми.
-
функция-декларатор
-
Указывает описатель типа, имя функции и список параметров для функции.
Атрибут [local] может применяться к отдельным функциям или к интерфейсу в целом.
При использовании в заголовке интерфейса атрибут [local] позволяет использовать компилятор MIDL в качестве генератора заголовков. Компилятор не создает заглушки для каких-либо функций и не гарантирует возможность передачи заголовка.
Для интерфейса RPC атрибут [local] нельзя использовать одновременно с атрибутом [uuid] . В заголовке интерфейса должен присутствовать [uuid] или [local] , а выбранный должен быть указан ровно один раз.
Для COM-интерфейса (определяемого атрибутом интерфейса [объект] ) список атрибутов интерфейса может включать атрибут [local] даже при наличии атрибута [uuid] .
При использовании в отдельной функции атрибут [local] обозначает локальную процедуру, для которой заглушки не создаются. Использование [local] в качестве атрибута функции является расширением Майкрософт для DCE IDL. Поэтому этот атрибут недоступен при компиляции с помощью параметра MIDL /osf .
Обратите внимание, что интерфейс без атрибутов можно импортировать в базовый IDL-файл. Однако интерфейс должен содержать только типы данных без процедур. Если в интерфейсе содержится хотя бы одна процедура, необходимо указать локальный атрибут или атрибут UUID.
/* IDL file #1 */
[
local
]
interface local_procs
{
void MyLocalProc(void);
}
/* IDL file #2 */
[
object,
uuid(12345678-1234-1234-123456789ABC),
local
]
interface local_object_procs : IUnknown
{
void MyLocalObjectProc(void);
}
/* IDL file #3 */
[
uuid(87654321-1234-1234-123456789ABC)
]
interface mixed_procs
{
[local] void MyLocalProc(void);
HRESULT MyRemoteProc([in] short sParam);
}