Zeichenfolgeattribut

Das [string] -Attribut gibt an, dass das eindimensionale Zeichen, wchar_t- oder Bytearray oder der Zeiger auf ein solches Array als Zeichenfolge behandelt werden muss. Die Zeichenfolge kann auch ein Array (oder ein Zeiger auf ein Array) von Konstrukten sein, deren Felder alle vom Typ Byte sind.

typedef [ string [[ , type-attribute-list ]] ] type-specifier declarator-list; 

typedef [ struct | union ] 
{
    [ string [[ , field-attribute-list ]] ] type-specifier declarator-list;
    ...
};

[ string [[ , function-attribute-list ]] ] type-specifier ptr-decl function-name(
  [[ [ parameter-attribute-list ] ]] type-specifier [[standard-declarator]]
  , ...);

[[ [ function-attribute-list ] ]] type-specifier [[ptr-decl]] function-name(
    [ string [[ , parameter-attribute-list ]] ] type-specifier [[standard-declarator]]
  , ...);

Parameter

type-attribute-list

Gibt ein oder mehrere Attribute an, die für einen Typ gelten. Gültige Typattribute sind [handle], [switch_type], [transmit_as]; das Zeigerattribute [ref], [unique] oder [ptr]; und die Verwendungsattribute [context_handle], [Zeichenfolge] und [ignorieren]. Trennen Sie mehrere Attribute durch Kommas.

Typspezifizierer

Gibt einen Basistyp, einen Strukturtyp oder einen Typbezeichner an. Eine optionale Speicherspezifikation kann dem Typbezeichner vorangestellt werden.

Standarddeklarator

Gibt einen C-Standard-Deklarator an, z. B. einen Bezeichner, einen Zeiger-Deklarator oder einen Array-Deklarator. Weitere Informationen finden Sie unter Array- und Sized-Pointer Attribute, Arrays. und Arrays und Zeiger.

deklarator-list

Gibt Standard-C-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. Die Deklaratorliste besteht aus einem oder mehreren Deklaratoren, die durch Kommas getrennt sind. Der Parameternamebezeichner im Funktionsdeklarator ist optional.

field-attribute-list

Gibt null oder mehr Feldattribute an, die für die Struktur, den Union-Member oder den Funktionsparameter gelten. Die beiden gültigen Feldattribute sind [max_is] und [size_is]; die Verwendungsattribute [string], [ignore], und [context_handle], das Zeigerattribute [ref], [unique], oder [ptr] und das Union-Attribut [switch_type]. Trennen Sie mehrere Feldattribute durch Kommas.

function-attribute-list

Gibt null oder mehr Attribute an, die für die Funktion gelten. Gültige Funktionsattribute sind [Rückruf], [lokal]; das Zeigerattribute [ref], [unique] oder [ptr]; und die Verwendungsattribute [Zeichenfolge], [ignorieren] und [context_handle].

ptr-decl

Gibt einen optionalen Zeigerdeklarator an, für den das Attribut [string] gilt. Ein Zeigerdeklarations-Deklarator ist mit dem in C verwendeten Zeiger-Deklarator identisch. es wird aus dem *-Designator, Modifizierern wie far und dem Qualifizierer const erstellt.

Funktionsname

Gibt den Namen der Remoteprozedur an.

parameter-attribute-list

Besteht aus null oder mehr Attributen, die für den angegebenen Parametertyp geeignet sind. Parameterattribute können die Richtungsattribute [in] und [out]; die Feldattribute [max_is] und [size_is]; das Zeigerattribute [ref], [unique] oder [ptr]; und die Nutzungsattribute [context_handle] und [Zeichenfolge]. Das Verwendungsattribut [ignore] kann nicht als Parameterattribute verwendet werden. Trennen Sie mehrere Attribute durch Kommas.

Bemerkungen

Wenn das [string] -Attribut mit einem Array verwendet wird, dessen Grenzen zur Laufzeit bestimmt werden, müssen Sie auch ein [size_is] oder [max_is] -Attribut angeben, wie im folgenden Beispiel gezeigt:

/* a string that can hold up to MAX_STRING_LENGTH characters */
typedef [string, max_is(MAX_STRING_LENGTH)] char line[];

Das [string] -Attribut kann nicht mit Attributen verwendet werden, die den Bereich der übertragenen Elemente angeben, z. B. [first_is], [last_is] und [length_is].

Bei Verwendung für mehrdimensionale Arrays gilt das [string] -Attribut für das rechtsste Array.

Verwenden Sie zum Definieren einer gezählten Zeichenfolge nicht das [string]- Attribut. Verwenden Sie ein Zeichenarray oder einen zeichenbasierten Zeiger, z. B.:

typedef struct 
{ 
    unsigned short size; 
    unsigned short length; 
    [size_is(size), length_is(length)] char string[*]; 
} counted_string;

Das [string] -Attribut gibt an, dass der Stub eine sprachbasierte Methode verwenden soll, um die Länge von Zeichenfolgen zu bestimmen.

Beim Deklarieren von Zeichenfolgen in C müssen Sie Platz für ein zusätzliches Zeichen zuweisen, das das Ende der Zeichenfolge markiert.

Beispiele

/* a string type that can hold up to 80 characters */ 
typedef [string] char line[81]; 
 
HRESULT Proc1([in, string] char * pszName);

Weitere Informationen

Arrays

MIDL-Basistypen

Rückruf

Char

const

context_handle

Enum

first_is

Behandeln

IDL-Datei (Interface Definition)

Ignorieren

last_is

length_is

lokal

max_is

pointer_default

Ptr

Ref

size_is

Struktur

switch_type

transmit_as

union

Einzigartige

wchar_t