attribut represent_as

L’attribut ACF [represent_as] associe un type local nommé dans le type repr-type de langue cible à un type de transfert nommé-type transféré entre le client et le serveur.

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

Paramètres

type nommé

Spécifie le type de données de transfert nommé qui est transféré entre le client et le serveur.

type-attribute-list

Spécifie un ou plusieurs attributs qui s’appliquent au type. Séparez plusieurs attributs par des virgules.

repr-type

Spécifie le type local représenté dans la langue cible présentée aux applications client et serveur.

Notes

Lorsque vous utilisez [represent_as], vous devez fournir des routines qui se convertissent entre les types de transfert local et les types de transfert, ainsi que la mémoire libre utilisée pour contenir les données converties. L’attribut [represent_as] indique aux stubs d’appeler les routines de conversion fournies par l’utilisateur.

Le type nommé transféré doit être résolu en un type de base MIDL, un type prédéfini ou un identificateur de type. Pour plus d’informations, consultez Types de base MIDL.

Vous devez fournir les routines suivantes :

Nom de la routine Description
named_type**_from_local** Convertit les données du type local en type réseau. La routine alloue de la mémoire pour le type de données réseau, y compris la mémoire pour toutes les données référencées par les pointeurs dans le type de données réseau.
named_type**_to_local** Convertit les données du type réseau en type local. La routine est responsable de l’allocation de la mémoire pour les données référencées par les pointeurs dans le type local. RPC alloue de la mémoire pour le type local lui-même.
named_type**_free_local** Libère la mémoire allouée pour les données référencées par les pointeurs dans le type local. RPC libère de la mémoire pour le type lui-même
named_type**_free_inst** Libère la mémoire allouée pour les données référencées par les pointeurs dans le type de réseau et pour le type de réseau lui-même.

 

Le stub client appelle named-type**_from_local** pour allouer de l’espace pour le type transmis et traduire les données du type local vers le type réseau. Le stub du serveur alloue de l’espace pour le type de données d’origine et appelle le type nommé**_to_local** pour traduire les données du type réseau en type local.

Lors du retour à partir du code d’application, les stubs client et serveur appellent named-type**_free_inst** pour libérer le stockage pour le type réseau. Le stub client appelle named-type**_free_local** pour libérer le stockage retourné par la routine.

Les types suivants ne peuvent pas avoir d’attribut [represent_as] :

  • Tableaux conformes, variables ou conformants
  • Structures dans lesquelles le dernier membre est un tableau conforme (structure conforme)
  • Pointeurs ou types qui contiennent un pointeur
  • Canaux ou types qui contiennent des canaux
  • Types utilisés comme type de base pour un canal
  • Types prédéfinis handle_t, void
  • Types qui ont l’attribut [handle]

Exemples

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

Voir aussi

Fichier de configuration d’application (ACF)

Tableaux

MIDL Base Types

handle_t

Typedef

void