Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Атрибут ACF [represent_as] связывает именованный локальный тип в целевом языке repr-type с именованным типом передачи, передаваемым между клиентом и сервером.
typedef [represent_as(repr-type) [[ , type-attribute-list ]] ] named-type;
void __RPC_USER named-type_from_local (
repr-type __RPC_FAR * ,
named-type __RPC_FAR * __RPC_FAR * );
void __RPC_USER named-type_to_local (
named-type __RPC_FAR * ,
repr-type __RPC_FAR * ); void __RPC_USER named-type _free_inst ( named-type __RPC_FAR * ); void __RPC_USER named-type _free_local ( repr-type __RPC_FAR * );
Параметры
-
именованный тип
-
Указывает именованный тип данных передачи, передаваемый между клиентом и сервером.
-
type-attribute-list
-
Указывает один или несколько атрибутов, применяемых к типу. Разделите несколько атрибутов запятыми.
-
repr-type
-
Указывает представленный локальный тип на целевом языке, который представлен клиентским и серверным приложениям.
Remarks
При использовании [represent_as], необходимо предоставить подпрограммы, которые преобразовываются между локальными и типами передачи, а также свободная память, используемая для хранения преобразованных данных. Атрибут [represent_as] указывает заглушкам вызывать процедуры преобразования, предоставляемые пользователем.
Переданный именованный тип должен разрешаться в базовый тип MIDL, предопределенный тип или идентификатор типа. Дополнительные сведения см. в разделе "Базовые типы MIDL".
Необходимо указать следующие подпрограммы:
| Имя подпрограммы | Описание: |
|---|---|
| named_type**_from_local** | Преобразует данные из локального типа в тип сети. Подпрограмма выделяет память для сетевого типа данных, включая память для любых данных, на которые ссылаются указатели в типе сетевых данных. |
| named_type**_to_local** | Преобразует данные из сетевого типа в локальный тип. Подпрограмма отвечает за выделение памяти для данных, на которые ссылаются указатели в локальном типе. RPC выделяет память для самого локального типа. |
| named_type**_free_local** | Освобождает память, выделенную для данных, на которые ссылаются указатели в локальном типе. RPC освобождает память для самого типа |
| named_type**_free_inst** | Освобождает память, выделенную для данных, на которые ссылаются указатели в сетевом типе и для самого типа сети. |
Заглушка клиента вызывает именованный тип**_from_local** для выделения пространства для передаваемого типа и преобразования данных из локального типа в тип сети. Заглушка сервера выделяет место для исходного типа данных и вызывает именованный тип**_to_local** для преобразования данных из сетевого типа в локальный тип.
При возвращении из кода приложения клиент и серверные заглушки вызывают именованный тип**_free_inst** для освобождения хранилища для типа сети. Заглушка клиента вызывает именованный тип**_free_local** для освобождения хранилища, возвращаемого подпрограммой.
У следующих типов не может быть атрибут [represent_as] :
- Соответствие, различные или соответствующие массивы
- Структуры, в которых последний элемент является соответствующим массивом (соответствующая структура)
- Указатели или типы, содержащие указатель
- Каналы или типы, содержащие каналы
- Типы, используемые в качестве базового типа для канала
- Предопределенные типы handle_t, void
- Типы с атрибутом [handle]
Примеры
//these data types defined in .IDL or elsewhere
typedef struct _lbox
{
long data;
struct _lbox *next;
} lbox;
typedef [ref] lbox *PBOX_LOC;
typedef long LONG4[4];
//in .ACF file :
interface iface
{
typedef [ represent_as(PBOX_LOC) ] LONG4;
}
См. также раздел