Conforme matrices
De grootte van een conforme matrix kan variëren of voldoen telkens wanneer de client deze doorgeeft aan een externe procedure op de server. Met de interfacedefinitie in het MIDL-bestand van de toepassing kan de client de grootte van de matrix opgeven telkens wanneer deze de externe procedure aanroept. Gebruik lege vierkante haken ([ ]) of een sterretje in de vierkante haken ([*]) in de matrixdefinitie om een conforme matrix aan te geven.
Het volgende voorbeeld bevat de definitie van een externe procedure in een interface in een MIDL-bestand. De client geeft de grootte op van de matrix die wordt doorgegeven aan de server door de parameter arraySize.
[
/*Attributes are defined here. */
]
interface MyInterface
{
MyRemoteProc(
long lArraySize,
[size_is(lArraySize)] char achArray[*]
);
/* Other interface procedures are defined here. */
}
De interfacedefinitie maakt gebruik van het MIDL-kenmerk [size_is] om de grootte op te geven van de matrix die de client doorgeeft aan de server. Als u liever de maximumwaarde van de indexnummers van de matrix aangeeft, gebruikt u in plaats daarvan het kenmerk [max_is]. Zie Matrixkenmerkenvoor meer informatie over deze MIDL-kenmerken.
Het volgende codefragment illustreert hoe een client de externe procedure kan aanroepen die is gedefinieerd in het voorgaande MIDL-bestand.
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);
Dit fragment roept de externe procedure MyRemoteProc twee keer aan. Bij de eerste aanroep wordt een matrix van 20 elementen doorgegeven. Bij de tweede aanroep geeft de client een matrix van 200 elementen door.