atributo represent_as

El atributo ACF [represent_as] asocia un tipo local con nombre en el tipo repr-type de idioma de destino con un tipo de transferencia denominado tipo que se transfiere entre el cliente y el servidor.

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 * );

Parámetros

tipo con nombre

Especifica el tipo de datos de transferencia con nombre que se transfiere entre el cliente y el servidor.

type-attribute-list

Especifica uno o varios atributos que se aplican al tipo. Separe varios atributos con comas.

repr-type

Especifica el tipo local representado en el idioma de destino que se presenta a las aplicaciones cliente y servidor.

Comentarios

Al usar [represent_as], debe proporcionar rutinas que conviertan entre los tipos de transferencia locales y los tipos de transferencia y esa memoria libre usada para contener los datos convertidos. El atributo [represent_as] indica a los códigos auxiliares que llamen a las rutinas de conversión proporcionadas por el usuario.

El tipo transferido denominado-type debe resolverse en un tipo base MIDL, un tipo predefinido o un identificador de tipo. Para obtener más información, vea Tipos base MIDL.

Debe proporcionar las siguientes rutinas:

Nombre de rutina Descripción
named_type**_from_local** Convierte los datos del tipo local en el tipo de red. La rutina asigna memoria para el tipo de datos de red, incluida la memoria de los datos a los que hacen referencia los punteros del tipo de datos de red.
named_type**_to_local** Convierte los datos del tipo de red en el tipo local. La rutina es responsable de asignar memoria para los datos a los que hacen referencia los punteros en el tipo local. RPC asigna memoria para el propio tipo local.
named_type**_free_local** Libera memoria asignada para los datos a los que hacen referencia los punteros en el tipo local. RPC libera memoria para el propio tipo
named_type**_free_inst** Libera memoria asignada para los datos a los que hacen referencia los punteros en el tipo de red y para el propio tipo de red.

 

El código auxiliar de cliente llama al tipo de cliente**_from_local** para asignar espacio para el tipo transmitido y traducir los datos del tipo local al tipo de red. El código auxiliar del servidor asigna espacio para el tipo de datos original y llama a named-type**_to_local** para traducir los datos del tipo de red al tipo local.

Tras devolver el código de la aplicación, los códigos auxiliares del cliente y del servidor llaman denominado-type**_free_inst** para desasignar el almacenamiento para el tipo de red. El código auxiliar de cliente llama al tipo de cliente**_free_local** para desasignar el almacenamiento devuelto por la rutina.

Los tipos siguientes no pueden tener un atributo [represent_as]:

  • Matrices conformes, variables o conformes
  • Estructuras en las que el último miembro es una matriz conforme (una estructura conforme)
  • Punteros o tipos que contienen un puntero
  • Canalizaciones o tipos que contienen canalizaciones
  • Tipos que se usan como tipo base para una canalización
  • Tipos predefinidos handle_t, void
  • Tipos que tienen el atributo [handle]

Ejemplos

//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; 
}

Vea también

Archivo de configuración de la aplicación (ACF)

Matrices

Tipos base MIDL

handle_t

Typedef

Vacío