Attributs de tableau
Il existe une relation étroite entre les tableaux et les pointeurs dans le langage C. Lorsqu’il est passé en tant que paramètre à une fonction, un nom de tableau est traité comme un pointeur vers le premier élément du tableau, comme indiqué dans l’exemple suivant :
/* fragment */
extern void f1(char * p1);
void main(void)
{
char chArray[MAXSIZE];
fLocal1(chArray);
}
Dans un appel local, vous pouvez utiliser le paramètre de pointeur à mars par le biais de la mémoire et examiner le contenu d’autres adresses :
/* dump memory (fragment) */
void fLocal1(char * pch1)
{
int i;
for (i = 0; i < MAXSIZE; i++)
printf("%c ", *pch1++);
}
Lorsqu’un client passe un pointeur vers une procédure distante, le stub client transmet à la fois le pointeur et les données vers lesquelles il pointe. À moins que le pointeur ne soit limité à ses données correspondantes, toute la mémoire du client doit être transmise avec chaque appel distant. En appliquant le typage fort dans la définition de l’interface, MIDL limite le traitement du stub client aux données qui correspondent au pointeur spécifié.
La taille du tableau et la plage d’éléments de tableau transmis à l’ordinateur distant peuvent être des constantes ou des variables. Lorsque ces valeurs sont variables et, par conséquent, déterminées au moment de l’exécution, vous devez utiliser des attributs dans le fichier IDL pour spécifier le nombre d’éléments de tableau à transmettre. Les attributs MIDL suivants prennent en charge les limites de tableau.
| Attribut | Description | Default |
|---|---|---|
| [ tout _ d’abord ,] | Index du premier élément de tableau transmis. | 0 |
| [la dernière _ est] | Index du dernier élément de tableau transmis. | - |
| [la longueur _ est] | Nombre total d’éléments de tableau transmis. | - |
| [le nombre maximal _ est] | Valeur d’index de tableau valide la plus élevée. | - |
| [ Min _ est] | Valeur d’index de tableau valide la plus basse. | 0 |
| [la taille _ est] | Nombre total d’éléments de tableau alloués pour le tableau. | - |
Notes
L’attribut Min _ is n’est pas implémenté dans RPC. L’index de tableau minimal est toujours traité comme zéro.