attributo represent_as

L'attributo ACF [represent_as] associa un tipo locale denominato nel tipo repr della lingua di destinazione a un tipo di trasferimento denominato-type trasferito tra client e server.

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

Parametri

named-type

Specifica il tipo di dati di trasferimento denominato trasferito tra client e server.

type-attribute-list

Specifica uno o più attributi che si applicano al tipo. Separare più attributi con virgole.

repr-type

Specifica il tipo locale rappresentato nella lingua di destinazione presentata alle applicazioni client e server.

Commenti

Quando si usa [represent_as], è necessario specificare routine che convertono tra i tipi di trasferimento locale e quello libero utilizzato per contenere i dati convertiti. L'attributo [represent_as] indica agli stub di chiamare le routine di conversione fornite dall'utente.

Il tipo trasferito denominato-type deve essere risolto in un tipo di base MIDL, in un tipo predefinito o in un identificatore di tipo. Per altre informazioni, vedere Tipi di base MIDL.

È necessario specificare le routine seguenti:

Nome routine Descrizione
named_type**_from_local** Converte i dati dal tipo locale al tipo di rete. La routine alloca la memoria per il tipo di dati di rete, inclusa la memoria per tutti i dati a cui fanno riferimento i puntatori nel tipo di dati di rete.
named_type**_to_local** Converte i dati dal tipo di rete al tipo locale. La routine è responsabile dell'allocazione della memoria per i dati a cui fanno riferimento i puntatori nel tipo locale. RPC alloca memoria per il tipo locale stesso.
named_type**_free_local** Libera la memoria allocata per i dati a cui fanno riferimento i puntatori nel tipo locale. RPC libera memoria per il tipo stesso
named_type**_free_inst** Libera la memoria allocata per i dati a cui fanno riferimento i puntatori nel tipo di rete e per il tipo di rete stesso.

 

Lo stub client chiama named-type**_from_local** per allocare spazio per il tipo trasmesso e per convertire i dati dal tipo locale al tipo di rete. Lo stub del server alloca spazio per il tipo di dati originale e chiama named-type**_to_local** per convertire i dati dal tipo di rete al tipo locale.

Al termine della restituzione dal codice dell'applicazione, gli stub client e server chiamano named-type**_free_inst** per deallocare la risorsa di archiviazione per il tipo di rete. Lo stub client chiama named-type**_free_local** per deallocare l'archiviazione restituita dalla routine.

I tipi seguenti non possono avere un attributo [represent_as] :

  • Matrici conformi, variabili o conformi
  • Strutture in cui l'ultimo membro è una matrice conforme (struttura conforme)
  • Puntatori o tipi che contengono un puntatore
  • Pipe o tipi che contengono pipe
  • Tipi utilizzati come tipo di base per una pipe
  • Tipi predefiniti handle_t, void
  • Tipi con l'attributo [handle]

Esempi

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

Vedere anche

File di configurazione dell'applicazione (ACF)

Matrici

Tipi di base MIDL

handle_t

Typedef

void