out-Attribut
Das Attribut [out] identifiziert Zeigerparameter, die von der aufgerufenen Prozedur an die Aufrufende Prozedur (vom Server bis zum Client) zurückgegeben werden.
[ [function-attribute-list] ] type-specifier [pointer-declarator] function-name(
[ out [ , parameter-attribute-list ] ] type-specifier [declarator]
, ...
);
Parameter
-
function-attribut-list
-
Gibt null oder mehr Attribute an, die für die Funktion gelten. Gültige Funktionsattribute sind [rückruf], [local]; das Zeiger-Attribut [ref], [unique] oder [ptr]; und die Verwendungsattribute [string], [ignore] und [context_handle].
-
Typbezeichner
-
Gibt einen base_type- oder Struktur-, Union- oder Enumerationstyp oder Typbezeichner an. Eine optionale Speicherspezifikation kann dem Typbezeichner vorangestellt werden.
-
Zeiger-Deklarator
-
Gibt null oder mehr Zeiger-Deklaratoren an. Ein Zeiger-Deklarator ist identisch mit dem Zeiger-Deklarator, der in C verwendet wird; es wird aus dem *-Designator, Modifizierern wie weit und der Qualifizierer konst konstruiert.
-
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 Attribut [out] können auch das direktionale Attribut [out]; die Feldattribute [first_is], [last_is], [length_is], [max_is], [size_is] und [switch_type]; das Zeiger-Attribut [ref], [unique] oder [ptr]; und die Verwendungsattribute [context_handle] und [Zeichenfolge]. Das Verwendungsattribute [ignore] kann nicht als Parameterattribute verwendet werden. Trennen Sie mehrere Attribute mit 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 Zeigern. Der Parameter-Deklarator im Funktionsdeklarationsator, z. B. der Parametername, ist optional.
Bemerkungen
Das Attribut [out] gibt an, dass ein Parameter, der als Zeiger fungiert, und dessen zugeordneten Daten im Arbeitsspeicher von der aufgerufenen Prozedur an die aufrufende Prozedur übergeben werden.
Das Attribut [out] muss ein Zeiger sein. DCE IDL-Compiler erfordern die Anwesenheit eines expliziten * als Zeiger-Deklarator in der Parameterdeklaration. Microsoft IDL bietet eine Erweiterung, die diese Anforderung abbricht und ein Array oder einen zuvor definierten Zeigertyp ermöglicht.
Ein verwandtes 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.
Ein [out]-only-Parameter wird angenommen, wenn die Remoteprozedur aufgerufen wird und der Speicher für das Objekt vom Server zugewiesen wird. Da Zeiger/Parameter auf oberster Ebene immer auf gültigen Speicher zeigen müssen und daher nicht NULL sein können, kann [out] nicht auf [eindeutig] oder [ptr]-Zeiger auf oberster Ebene angewendet werden. Parameter, die [eindeutig] oder [ptr]-Zeiger sind, müssen entweder [in] oder [in, out] sein.
Beispiele
HRESULT MyFunction([out] short * pcount);
Weitere Informationen