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