Feldattribute
Feldattribute sind die Attribute, die auf Felder eines Arrays, einer Struktur, einer Union oder eines Zeichenarrays angewendet werden können:
- [ignorieren], [size_is]
- [max_is]
- [length_is]
- [first_is]
- [last_is]
- [switch_is]
- [Zeichenfolge]
- Zeigerattribute
Beispielsweise werden Feldattribute in Verbindung mit Arraydeklarationen verwendet, um entweder die Größe des Arrays oder den Teil des Arrays anzugeben, der gültige Daten enthält. Dies geschieht, indem dem Array ein anderer Parameter, ein Strukturfeld oder ein konstanter Ausdruck zugeordnet wird.
Das [ignore] -Attribut legt Zeigerfelder fest, die während des Marshallvorgangs ignoriert werden sollen. Ein solches ignoriertes Feld ist auf der Empfängerseite auf NULL festgelegt.
MIDL bietet konforme, variierende und offene Arrays. Ein Array wird als konform bezeichnet, wenn seine Grenzen zur Laufzeit bestimmt werden. Das Attribut [size_is] gibt die Obergrenze für die Zuordnungsgröße des Arrays und das Attribut [max_is] die Obergrenze für den Wert eines gültigen Arrayindexes an. Weitere Informationen finden Sie unter [Arrays].
Ein Array wird als variierend bezeichnet, wenn seine Grenzen zur Kompilierzeit bestimmt werden, aber der Bereich der übertragenen Elemente wird zur Laufzeit bestimmt. Ein offenes Array (auch als konformes variierende Array bezeichnet) ist ein Array, dessen Obergrenze und Bereich der übertragenen Elemente zur Laufzeit bestimmt werden. Um den Bereich der übertragenen Elemente eines Arrays zu bestimmen, muss die Arraydeklaration ein [length_is]-, [first_is]- oder [last_is] -Attribut enthalten.
Das [length_is] -Attribut gibt die Anzahl der zu übertragenden Arrayelemente an, und das [first_is] -Attribut gibt den Index des ersten zu übertragenden Arrayelements an. Das Attribut [last_is] gibt den Index des letzten zu übertragenden Arrayelements an.
Das [switch_is] -Feldattribute gibt einen Union-Diskriminator an. Wenn die Union ein Prozedurparameter ist, muss der Union-Diskriminator ein weiterer Parameter derselben Prozedur sein. Wenn die Union ein Feld einer Struktur ist, muss der Diskriminator ein anderes Feld der Struktur auf derselben Ebene wie das Unionsfeld sein. Der Diskriminator muss ein boolescher, char-, int- oder Enumerationstyp oder ein Typ sein, der in einen dieser Typen aufgelöst wird. Weitere Informationen finden Sie unter Nicht gekapselte Unions und [switch_is].
Das [Zeichenfolge] -Feldattribute gibt an, dass ein eindimensionales Zeichen- oder Bytearray oder ein Zeiger auf ein Nullzeichen oder Bytestrom als Zeichenfolge behandelt werden soll. Das Zeichenfolgen-Attribut gilt nur für eindimensionale Arrays und Zeiger. Der Elementtyp ist auf char, byte, wchar_t oder einen benannten Typ beschränkt, der in einen dieser Typen aufgelöst wird.
Informationen zum Kontext, in dem Feldattribute angezeigt werden, finden Sie unter MIDL-Arrays, MIDL-Strukturen und MIDL-Unions.