Tableaux variables

Dans MIDL, différentes tableaux sont fixes en taille. Ils permettent aux clients de passer différentes parties des tableaux des clients aux serveurs. La taille de la partie tableau peut varier de l’appel à l’appel. Toutefois, la taille du tableau global est fixe.

Par exemple, l’exemple suivant montre la définition d’une procédure distante dans une interface dans un fichier MIDL. La taille du tableau que le client passe au serveur est fixe par la constante ARRAY_SIZE. L’interface spécifie la partie du tableau que le client passe au serveur dans les paramètres firstElement et segmentSize.

[
    /*Attributes are defined here. */
]
interface MyInterface
{
    const long ARRAY_SIZE = 1000;

    MyRemoteProc(
        [in] long lFirstElement,
        [in] long lChunkSize,
        [in, first_is(lFirstElement), 
          length_is(lChunkSize)] char achArray[ARRAY_SIZE]
    );

    /* Other interface procedures are defined here. */
}

La définition d’interface utilise l’attribut MIDL [first_is] pour spécifier le numéro d’index du premier élément dans la partie du tableau que le client passe au serveur. L’attribut [length_is] spécifie le nombre total d’éléments de tableau transmis par le client. Pour plus d’informations sur ces attributs MIDL, consultez Attributs de tableau.

Le fragment de code suivant illustre comment un client peut appeler la procédure distante définie dans le fichier MIDL précédent.

long lFirstArrayElementNumber = 20;
long lTotalElementsPassed = 100;
char achCharArray[ARRAY_SIZE];

// Code to store chars in the array goes here.

MyRemoteProc(
    lFirstArrayElementNumber ,
    lTotalElementsPassed , 
    achCharArray);

firstArrayElementNumber = 120;
totalElementsPassed = 200;

MyRemoteProc(
    lFirstArrayElementNumber ,
    lTotalElementsPassed , 
    achCharArray);

Ce fragment appelle deux fois la procédure distante MyRemoteProc. Sur le premier appel, il passe les éléments de tableau numérotés 20 à 119, comme indiqué par les valeurs des variables firstArrayElementNumber et totalElementsPassed. Lors du deuxième appel, le client transmet les éléments de tableau numérotés 120 à 319.