out-Attribut
Das [out]-Attribut identifiziert Zeigerparameter, die von der aufgerufenen Prozedur an die aufrufende Prozedur (vom Server zum Client) zurückgegeben werden.
[ [function-attribute-list] ] type-specifier [pointer-declarator] function-name(
[ out [ , parameter-attribute-list ] ] type-specifier [declarator]
, ...
);
-
function-attribute-list
-
Gibt null oder mehr Attribute an, die für die Funktion gelten. Gültige Funktionsattribute sind [Callback], [local]; das Zeiger-Attribut [ref], [eindeutig], oder [ptr]; und die Verwendungsattribute [Zeichenfolge], [ignorieren] und [context_handle].
-
Typspezifizierer
-
Gibt einen base_type- oder Struktur-, Union- oder Enum-Typ oder Typbezeichner an. Eine optionale Speicherspezifikation kann dem Typbezeichner vorangestellt werden.
-
Zeiger-Deklarator
-
Gibt null oder mehr Zeiger-Deklaratoren an. Ein Zeigerdeklarations-Deklarator ist identisch mit dem Zeigerdeklarations-Deklarator, der in C verwendet wird. es wird aus dem * -Bezeichner, Modifizierern wie far und dem Qualifizierer const erstellt.
-
Funktionsname
-
Gibt den Namen der Remoteprozedur an.
-
parameter-attribut-list
-
Gibt null oder mehr Attribute an, die für einen angegebenen Parametertyp geeignet sind. Parameterattribute mit dem [out]-Attribut können auch das direktionale Attribut [out] annehmen; die Feldattribute [first_is], [last_is], [length_is], [max_is], [size_is] und [switch_type]; das Zeiger-Attribut [ref], [eindeutig], oder [ptr]; und die Verwendungsattribute [context_handle] und [Zeichenfolge]. Das Verwendungsattribut [ignore] kann nicht als Parameterattribute verwendet werden. Trennen Sie mehrere Attribute durch Kommas.
-
declarator
-
Gibt die Standard-Deklaratoren an, z. B. Bezeichner, Zeiger-Deklaratoren und Array-Deklaratoren. Weitere Informationen finden Sie unter Array- und Sized-Pointer Attribute, Arrays und Arrays und Zeiger. Der Parameterdeklarationsator im Funktionsdeklarationsator, z. B. der Parametername, ist optional.
Das [out]-Attribut gibt an, dass ein Parameter, der als Zeiger fungiert, und die zugehörigen Daten im Arbeitsspeicher von der aufgerufenen Prozedur an die aufrufende Prozedur zurückgegeben werden sollen.
Das [out]-Attribut muss ein Zeiger sein. DCE-IDL-Compiler erfordern das Vorhandensein eines expliziten * als Zeiger-Deklarator in der Parameterdeklaration. Microsoft IDL bietet eine Erweiterung, die diese Anforderung löscht und ein Array oder einen zuvor definierten Zeigertyp zulässt.
Das zugehörige Attribut [in] gibt an, dass der Parameter von der aufrufenden Prozedur an die aufgerufene Prozedur übergeben wird. Die Attribute [in] und [out] geben die Richtung an, in der die Parameter übergeben werden. Ein Parameter kann als [in]-only, [out]-only oder [in, out] definiert werden.
Es wird davon ausgegangen, dass ein [out]-only-Parameter nicht definiert ist, wenn die Remoteprozedur aufgerufen wird und arbeitsspeicher für das Objekt vom Server zugewiesen wird. Da Zeiger/Parameter der obersten Ebene immer auf einen gültigen Speicher verweisen müssen und daher nicht NULL sein können, kann [out] nicht auf [eindeutig] oder [ptr]-Zeiger der obersten Ebene angewendet werden. Parameter, die [eindeutig] oder [ptr]-Zeiger sind, müssen entweder [in] oder [in, out]-Parameter sein.
HRESULT MyFunction([out] short * pcount);