Megosztás a következőn keresztül:


Változó tömbök

A MIDL-ben a változó méretű tömbök rögzítve vannak. Lehetővé teszik az ügyfelek számára a tömbök különböző részeinek átadását az ügyfelektől a kiszolgálókig. A tömbrész mérete minden egyes meghívásnál változhat. A teljes tömb mérete azonban rögzített.

Az alábbi példa például egy MIDL-fájl felületének távoli eljárásdefinícióját mutatja be. Az ügyfél által a kiszolgálónak átadandó tömb méretét az állandó ARRAY_SIZE rögzíti. Az interfész a tömb azon részét adja meg, amelyet az ügyfél a firstElement és a chunkSize paraméterekben továbbít a kiszolgálónak.

[
    /*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. */
}

A felületdefiníció a MIDL attribútum [first_is] használatával adja meg a tömb azon részének első elemének indexszámát, amelyet az ügyfél átad a kiszolgálónak. A [length_is] attribútum az ügyfél által áthaladó tömbelemek teljes számát adja meg. További információ ezekről a MIDL-attribútumokról: Tömbattribútumok.

Az alábbi kódrészlet bemutatja, hogyan hívhatja meg egy ügyfél az előző MIDL-fájlban definiált távoli eljárást.

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);

Ez a töredék kétszer hívja meg a MyRemoteProc távoli eljárást. Az első meghívás során a 20 és 119 között számozott tömbelemeket adja át az elsőArrayElementNumber és totalElementsPassed változó értékeinek megfelelően. A második hívás során az ügyfél átadja a 120 és 319 között számozott tömbelemeket.