als Attribut darstellen _

Die als ACF-Attribut [ dargestellte _ ] ordnet einen benannten lokalen Typ im Repr-Type der Zielsprache 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 ein oder mehrere Attribute an, die für den Typ gelten. 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 [ als darstellen, _ ] müssen Sie Routinen bereitstellen, die zwischen dem lokalen und dem Übertragungstyp konvertiert werden, sowie den freien Arbeitsspeicher, der zum Speichern der konvertierten Daten verwendet wird. Die [ darstellung _ als ] Attribut weist die Stubs an, die vom Benutzer bereitgestellten Konvertierungsroutinen aufzurufen.

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

Sie müssen die folgenden Routinen bereitstellen:

Routinename BESCHREIBUNG
benannter _ Typ" _ aus dem _ lokalen* Konvertiert Daten vom lokalen Typ in den Netzwerktyp. Die Routine belegt Arbeitsspeicher für den Netzwerkdatentyp, einschließlich Arbeitsspeicher für alle Daten, auf die von Zeigern im Netzwerkdatentyp verwiesen wird.
benannter _ Typ" _ in _ "local"* Konvertiert Daten vom Netzwerktyp in den lokalen Typ. Die Routine ist für die Zuweisung von Arbeitsspeicher für Daten zuständig, auf die zeiger im lokalen Typ verweisen. RPC belegt Arbeitsspeicher für den lokalen Typ selbst.
named _ type* _ free _ local** Gibt Arbeitsspeicher frei, der für Daten reserviert ist, auf die von Zeigern 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 reserviert ist, auf die von Zeigern im Netzwerktyp und für den Netzwerktyp selbst verwiesen wird.

Der Clientstub ruft named-type* _ von _ local** auf, um Speicherplatz für den übertragenen Typ zuzuweisen und die Daten vom lokalen Typ in den Netzwerktyp zu übersetzen. Der Serverstub ordnet Speicherplatz für den ursprünglichen Datentyp zu und ruft named-type* _ zu _ local** auf, um die Daten vom Netzwerktyp in den lokalen Typ zu übersetzen.

Nach der Rückgabe aus dem Anwendungscode rufen die Client- und Serverstubs named-type* _ free _ inst** auf, um die Zuordnung des Speichers für den Netzwerktyp freizugeben. Der Clientstub ruft named-type* _ free _ local** auf, um die Zuordnung des von der Routine zurückgegebenen Speichers freizugeben.

Die folgenden Typen können keine [ _ als ] Attribut darstellen:

  • 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
  • Pipes oder Typen, die Pipes enthalten
  • Typen, die als Basistyp für eine Pipe verwendet werden
  • Vordefinierte Typen behandeln _ t, void
  • Typen mit dem [ ] Handleattribut

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

void