Attributs de champ
Les attributs de champ sont les attributs qui peuvent être appliqués aux champs d’un tableau, d’une structure, d’une union ou d’un tableau de caractères :
- [ignore], [size_is]
- [max_is]
- [length_is]
- [first_is]
- [last_is]
- [switch_is]
- [string]
- attributs de pointeur
Par exemple, les attributs de champ sont utilisés conjointement avec des déclarations de tableau pour spécifier la taille du tableau ou la partie du tableau qui contient des données valides. Pour ce faire, associez un autre paramètre, un champ de structure ou une expression constante au tableau.
L’attribut [ignore] désigne les champs de pointeur à ignorer pendant le processus de marshaling. Ce champ ignoré a la valeur NULL côté récepteur.
MIDL fournit des tableaux conformes, variés et ouverts . Un tableau est appelé conforme si ses limites sont déterminées au moment de l’exécution. L’attribut [size_is] désigne la limite supérieure sur la taille d’allocation du tableau et l’attribut [max_is] désigne la limite supérieure sur la valeur d’un index de tableau valide. Pour plus d’informations, consultez [tableaux].
Un tableau est appelé variable si ses limites sont déterminées au moment de la compilation, mais la plage d’éléments transmis est déterminée au moment de l’exécution. Un tableau ouvert (également appelé tableau variable conforme) est un tableau dont la limite supérieure et la plage d’éléments transmis sont déterminées au moment de l’exécution. Pour déterminer la plage d’éléments transmis d’un tableau, la déclaration de tableau doit inclure un attribut [length_is],[first_is] ou [last_is].
L’attribut [length_is] désigne le nombre d’éléments de tableau à transmettre et l’attribut [first_is] désigne l’index du premier élément de tableau à transmettre. L’attribut [last_is] désigne l’index du dernier élément de tableau à transmettre.
L’attribut de champ [switch_is] désigne un discriminateur d’union. Lorsque l’union est un paramètre de procédure, le discriminateur d’union doit être un autre paramètre de la même procédure. Lorsque l’union est un champ d’une structure, le discriminateur doit être un autre champ de la structure au même niveau que le champ d’union. Le discriminateur doit être un type Boolean, char, int ou enum , ou un type qui se résout en l’un de ces types. Pour plus d’informations, consultez Unions non encapsulées et [switch_is] .
L’attribut de champ [chaîne] indique qu’un caractère unidimensionnel ou un tableau d’octets, ou un pointeur vers un caractère ou un flux d’octets sans fin, doit être traité comme une chaîne. L’attribut string s’applique uniquement aux tableaux et pointeurs unidimensionnels. Le type d’élément est limité à char, byte, wchar_t ou un type nommé qui est résolu en l’un de ces types.
Pour plus d’informations sur le contexte dans lequel les attributs de champ apparaissent, consultez Tableaux MIDL, structures MIDL et unions MIDL.