Поделиться через


атрибут explicit_handle

Атрибут ACF [explicit_handle] указывает, что каждая процедура имеет в качестве первого параметра примитивный дескриптор, например тип handle_t .

[
    explicit_handle
] 
interface interface-name
{
    ...
}

Параметры

interface-name

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

Комментарии

При использовании атрибута [explicit_handle] каждая процедура имеет примитивный дескриптор в качестве первого параметра, даже если IDL-файл не содержит этот дескриптор в списке параметров. Прототипы, создаваемые в файл заголовка и подпрограммы-заглушки, содержат дополнительный параметр, который используется в качестве дескриптора для направления удаленного вызова.

Атрибут [explicit_handle] влияет как на удаленные процедуры, так и на процедуры сериализации. Для сериализации типов подпрограммы поддержки создаются с исходным параметром в качестве явного дескриптора (сериализации). Если атрибут [explicit_handle] не используется, приложение по-прежнему может указать, что операция имеет явный дескриптор (привязку или сериализацию), направляющий вызов. Для этого в IDL-файл предоставляется прототип с аргументом, содержащим тип дескриптора. Обратите внимание, что в режиме по умолчанию аргумент, который не отображается первым, также можно использовать в качестве дескриптора, направляющего вызов.

Таким образом, хотя атрибут [explicit_handle] является способом предоставления прототипу IDL примитивного атрибута [explicit_handle] , ему не обязательно требуется изменение IDL-файла. В режиме /osf в качестве явного типа дескриптора можно использовать только первый аргумент.

Атрибут [explicit_handle] можно использовать в качестве атрибута интерфейса или атрибута операции. Как атрибут интерфейса он влияет на все операции в интерфейсе и все типы, требующие поддержки сериализации. Однако если он используется в качестве атрибута операции, он влияет только на конкретную операцию. Если метод содержит один или несколько дескрипторов контекста [in], в качестве дескриптора привязки используется самый левый дескриптор контекста [in] и дополнительный явный дескриптор не создается.

Примеры

/* ACF File */ 
[
    explicit_handle
] 
interface iface
{ 
    // Interface definition statements.
};

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

Файл конфигурации приложения (ACF)

auto_handle

implicit_handle

/Osf