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.