Freigeben über


Konforme Arrays

Die Größe eines konformen Arrays kann jedes Mal variieren oder entsprechen, wenn der Client es an eine Remoteprozedur auf dem Server übergibt. Mit der Schnittstellendefinition in der MIDL-Datei der Anwendung kann der Client bei jedem Aufruf der Remoteprozedur die Größe des Arrays angeben. Verwenden Sie leere eckige Klammern ([ ]) oder ein Sternchen in den eckigen Klammern ([*]) in der Arraydefinition, um ein konformes Array anzugeben.

Das folgende Beispiel enthält die Definition einer Remoteprozedur in einer Schnittstelle in einer MIDL-Datei. Der Client gibt die Größe des Arrays an, das vom Parameter arraySizean den Server übergeben wird.

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

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

Die Schnittstellendefinition verwendet das MIDL-Attribut [size_is] zum Angeben der Größe des Arrays, das der Client an den Server übergibt. Wenn Sie stattdessen den Maximalwert der Indexnummern des Arrays angeben möchten, verwenden Sie stattdessen das Attribut [max_is] . Weitere Informationen zu diesen MIDL-Attributen finden Sie unter Arrayattribute.

Das folgende Codefragment veranschaulicht, wie ein Client die in der vorherigen MIDL-Datei definierte Remoteprozedur aufrufen kann.

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

Dieses Fragment ruft die Remoteprozedur MyRemoteProc zweimal auf. Beim ersten Aufruf übergibt es ein Array von 20 Elementen. Beim zweiten Aufruf übergibt der Client ein Array von 200 Elementen.