attribut represent_as

Das [represent_as] ACF-Attribut ordnet einen benannten lokalen Typ in der Zielsprache repr-type einem Übertragungstyp namens type zu , der zwischen Client und Server übertragen wird.

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

Parameter

named-type

Gibt den benannten Übertragungsdatentyp an, der zwischen Client und Server übertragen wird.

type-attribute-list

Gibt mindestens ein Attribut an, das für den Typ gilt. Trennen Sie mehrere Attribute durch Kommas.

repr-type

Gibt den dargestellten lokalen Typ in der Zielsprache an, die den Client- und Serveranwendungen angezeigt wird.

Bemerkungen

Wenn Sie [represent_as] verwenden, müssen Sie Routinen bereitstellen, die zwischen den lokalen und den Übertragungstypen und dem freien Arbeitsspeicher konvertieren, der zum Speichern der konvertierten Daten verwendet wird. Das Attribut [represent_as] weist die Stubs an, die vom Benutzer bereitgestellten Konvertierungsroutinen aufzurufen.

Der übertragene Typ namens type muss in einen MIDL-Basistyp, einen vordefinierten Typ oder in einen Typbezeichner aufgelöst werden. Weitere Informationen finden Sie unter MIDL-Basistypen.

Sie müssen die folgenden Routinen bereitstellen:

Routinename BESCHREIBUNG
named_type**_from_local** Konvertiert Daten vom lokalen Typ in den Netzwerktyp. Die Routine weist Arbeitsspeicher für den Netzwerkdatentyp zu, einschließlich Arbeitsspeicher für alle Daten, auf die durch Zeiger im Netzwerkdatentyp verwiesen wird.
named_type**_to_local** Konvertiert Daten vom Netzwerktyp in den lokalen Typ. Die Routine ist für die Zuweisung von Arbeitsspeicher für Daten verantwortlich, auf die von Zeigern im lokalen Typ verwiesen wird. RPC weist arbeitsspeicher für den lokalen Typ selbst zu.
named_type**_free_local** Gibt Arbeitsspeicher frei, der für Daten zugewiesen ist, auf die durch Zeiger im lokalen Typ verwiesen wird. RPC gibt Arbeitsspeicher für den Typ selbst frei.
named_type**_free_inst** Gibt Arbeitsspeicher frei, der für die Daten, auf die durch Zeiger im Netzwerktyp verwiesen wird, und für den Netzwerktyp selbst zugewiesen ist.

 

Der Client-Stub ruft named-type**_from_local** auf, um Speicherplatz für den übertragenen Typ zuzuweisen und die Daten vom lokalen Typ in den Netzwerktyp zu übersetzen. Der Serverstub weist Speicherplatz für den ursprünglichen Datentyp zu und ruft named-type**_to_local** auf, um die Daten vom Netzwerktyp in den lokalen Typ zu übersetzen.

Nach der Rückgabe vom Anwendungscode rufen die Client- und Server-Stubs named-type**_free_inst** auf, um die Zuordnung des Speichers für den Netzwerktyp zu beheben. Der Clientstub ruft named-type**_free_local** auf, um den von der Routine zurückgegebenen Speicher zu behandeln.

Die folgenden Typen können nicht über ein [represent_as]-Attribut verfügen :

  • Konforme, variierende oder konform variierende Arrays
  • Strukturen, in denen das letzte Element ein konformes Array ist (eine konforme Struktur)
  • Zeiger oder Typen, die einen Zeiger enthalten
  • Rohre oder Typen, die Rohre enthalten
  • Typen, die als Basistyp für eine Pipe verwendet werden
  • Vordefinierte Typen handle_t, void
  • Typen mit dem Attribut [handle]

Beispiele

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

Weitere Informationen

Anwendungskonfigurationsdatei (Application Configuration File, ACF)

Arrays

MIDL-Basistypen

handle_t

Typedef

Leere