represent_as 属性

[represent_as] ACF 属性将目标语言 repr-type 中的命名本地类型与在客户端和服务器之间传输的名为-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 * );

参数

named-type

指定在客户端和服务器之间传输的命名传输数据类型。

type-attribute-list

指定应用于类型的一个或多个属性。 用逗号分隔多个属性。

repr-type

以提供给客户端和服务器应用程序的目标语言指定表示的本地类型。

备注

使用 [represent_as]时,必须提供在本地和传输类型之间转换的例程,以及用于保存转换后数据的可用内存。 [represent_as] 属性指示存根调用用户提供的转换例程。

传输的类型 named-type 必须解析为 MIDL 基类型、预定义类型或类型标识符。 有关详细信息,请参阅 MIDL 基类型

必须提供以下例程:

例程名称 说明
named_type**_from_local** 将数据从本地类型转换为网络类型。 例程为网络数据类型分配内存,包括网络数据类型中指针引用的任何数据的内存。
named_type**_to_local** 将数据从网络类型转换为本地类型。 例程负责为本地类型中的指针引用的数据分配内存。 RPC 为本地类型本身分配内存。
named_type**_free_local** 释放为本地类型中的指针引用的数据分配的内存。 RPC 释放类型本身的内存
named_type**_free_inst** 释放为网络类型中的指针引用的数据和网络类型本身分配的内存。

 

客户端存根调用 named-type**_from_local**,为传输的类型分配空间,并将本地类型中的数据转换为网络类型。 服务器存根为原始数据类型分配空间,并调用 命名类型**_to_local**,以将数据从网络类型转换为本地类型。

从应用程序代码返回后,客户端和服务器存根调用 命名类型**_free_inst**,以解除分配网络类型的存储。 客户端存根调用 命名类型**_free_local**,以解除分配例程返回的存储。

以下类型不能具有 [represent_as] 属性:

  • 一致性数组、可变数组或一致性变化数组
  • 其中最后一个成员是符合性数组 (符合性结构的结构)
  • 包含指针的指针或类型
  • 管道或包含管道的类型
  • 用作管道基类型的类型
  • 预定义类型 handle_tvoid
  • 具有 [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; 
}

另请参阅

应用程序配置文件 (ACF)

阵 列

MIDL 基类型

handle_t

typedef

无效