Konforma matriser

Storleken på en överensstämmande matris kan variera eller överensstämma varje gång klienten skickar den till en fjärrprocedur på servern. Gränssnittsdefinitionen i programmets MIDL-fil gör att klienten kan ange storleken på matrisen varje gång den anropar fjärrproceduren. Använd tomma hakparenteser ([ ]) eller en asterisk i hakparenteserna ([*]) i matrisdefinitionen för att ange en överensstämmande matris.

Följande exempel innehåller definitionen av en fjärrprocedur i ett gränssnitt i en MIDL-fil. Klienten anger storleken på matrisen som den skickar till servern med parametern arraySize.

[
    /*Attributes are defined here. */
]
interface MyInterface
{
    MyRemoteProc(
         long lArraySize,
         [size_is(lArraySize)] char achArray[*]
    );

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

Gränssnittsdefinitionen använder MIDL-attributet [size_is] för att ange storleken på matrisen som klienten skickar till servern. Om du hellre vill ange det maximala värdet för matrisens indexnummer använder du attributet [max_is] i stället. Mer information om dessa MIDL-attribut finns i arrayattribut.

Följande kodfragment illustrerar hur en klient kan anropa fjärrproceduren som definierades i föregående MIDL-fil.

long lArrayLength = 20;
char achCharArray[20], achAnotherCharArray[200];

// Code to store 20 chars in achCharArray goes here.

MyRemoteProc(
    lArrayLength ,
    achCharArray);

lArrayLength = 200;

// Code to store 200 chars in achAnotherCharArray goes here.

MyRemoteProc(
    lArrayLength ,
    achAnotherCharArray);

Det här fragmentet anropar fjärrproceduren MyRemoteProc två gånger. Den första anropet skickar en matris med 20 element. Vid det andra anropet skickar klienten en matris med 200 element.