Das Wire _ Marshal-Attribut
Das [ Wire _ Marshal-Attribut ] ist ein IDL-Typattribut, das in der Syntax ähnlich [ _ ist, um alszu ] übertragen, bietet aber eine effizientere Möglichkeit zum Marshallen von Daten über ein Netzwerk.
Sie verwenden das [ Wire _ Marshal-Attribut, ] um einen Datentyp anzugeben, der anstelle des anwendungsspezifischen Datentyps übertragen wird. Jeder anwendungsspezifische Typ verfügt über einen entsprechenden übertragungsfähigen Typ, der die Wire-Darstellung (die im Netzwerk verwendete Darstellung) definiert. Der anwendungsspezifische Typ muss nicht übertragbar sein, aber er muss ein Typ sein, den MIDL erkennt. Verwenden Sie das ACF-Attribut , um einen für MIDL unbekannten Typ zu [ _ marshallen. ]
Ihr anwendungsspezifischer Typ kann ein einfacher, zusammengesetzter oder Zeigertyp sein. Die Haupteinschränkung besteht darin, dass die Typinstanz über eine feste, klar definierte Arbeitsspeichergröße verfügen muss. Wenn sich die Größe Ihrer Typinstanz ändern muss, verwenden Sie ein Zeigerfeld anstelle eines konformen Arrays. Alternativ können Sie einen Zeiger auf den veränderlichen Typ definieren.
Sie müssen die Routinen zum Dimensionieren, Marshallen und Aufheben derMarsierung der Daten sowie zum Freigeben des zugeordneten Arbeitsspeichers bereitstellen. In der folgenden Tabelle werden die vier benutzerdefinierten Routinenamen beschrieben. Der < Typ ist der > userm-type, der in der Definition des [ Wire _ Marshal-Typs angegeben ] ist.
| -Routine zurückgegebener Wert | BESCHREIBUNG |
|---|---|
| <Geben > _ Sie UserSize ein. | Größen des RPC-Datenpuffers vor dem Marshalling auf Client- oder Serverseite. |
| <Geben > _ Sie UserMarshal ein. | Marshallt die Daten auf Client- oder Serverseite. |
| <Geben > _ Sie UserUnmarshal ein. | Entmarshals der Daten auf Client- oder Serverseite. |
| <Geben > _ Sie UserFree ein. | Gibt die Daten auf serverseitiger Seite frei. |
Diese vom Programmierer bereitgestellten Routinen werden entweder vom Client oder von der Serveranwendung basierend auf den direktionalen Attributen bereitgestellt.
Wenn sich der Parameter nur [ in ] befindet, überträgt der Client an den Server. Der Client benötigt den < Typ > _ UserSize und < den Typ > _ UserMarshal-Funktionen. Der Server benötigt den < Typ > _ UserUnmarshal und < den Typ > _ UserFree-Funktionen.
Bei einem [ ] out-only-Parameter überträgt der Server an den Client. Der Server benötigt den < Typ > _ UserSize und < den Typ > _ UserMarshal-Funktionen, während der Client den < Typ > _ UserMarshal-Funktion benötigt.