Partager via


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 illustré 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 pour parcourir 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 transmet un pointeur à une procédure distante, le stub client transmet à la fois le pointeur et les données vers laquelle il pointe. Sauf si le pointeur est limité à ses données correspondantes, toute la mémoire du client doit être transmise avec chaque appel distant. En appliquant une saisie forte dans la définition de l’interface, MIDL limite le traitement 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 constantes ou variables. Lorsque ces valeurs sont variables et ainsi 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 Faire défaut
[ first_is] Index du premier élément de tableau transmis. 0
[ last_is] Index du dernier élément de tableau transmis. -
[ length_is] Nombre total d’éléments de tableau transmis. -
[ max_is] Valeur d’index de tableau valide la plus élevée. -
[ min_is] Valeur d’index de tableau valide la plus basse. 0
[ size_is] Nombre total d’éléments de tableau alloués pour le tableau. -

 

Note

L’attribut min_is n’est pas implémenté dans RPC. L’index de tableau minimal est toujours traité comme zéro.