Verschillende matrices
In MIDL worden variabele arrays in grootte vastgelegd. Hiermee kunnen clients verschillende delen van matrices doorgeven van clients naar servers. De grootte van het matrixgedeelte kan bij elke aanroep variëren. De grootte van de totale matrix is echter vast.
In het volgende voorbeeld ziet u bijvoorbeeld de definitie van een externe procedure in een interface in een MIDL-bestand. De grootte van de matrix die de client doorgeeft aan de server, wordt vastgezet door de constante ARRAY_SIZE. De interface geeft het gedeelte van de matrix aan dat de client doorgeeft aan de server in de parameters firstElement en chunkSize.
[
/*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. */
}
De interfacedefinitie maakt gebruik van het MIDL-kenmerk [first_is] om het indexnummer op te geven van het eerste element in het gedeelte van de matrix dat de client doorgeeft aan de server. Het kenmerk [length_is] geeft het totale aantal matrixelementen op dat de client doorgeeft. 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 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);
Dit fragment roept de externe procedure MyRemoteProc twee keer aan. Bij de eerste verwerking worden de array-elementen genummerd 20 tot en met 119, zoals aangegeven door de waarden van de variabelen firstArrayElementNumber en totalElementsPassed. Bij de tweede aanroep geeft de client de matrixelementen door met nummer 120 tot en met 319.