Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Det finns en nära relation mellan matriser och pekare på C-språket. När det skickas som en parameter till en funktion behandlas ett matrisnamn som en pekare till det första elementet i matrisen, som du ser i följande exempel:
/* fragment */
extern void f1(char * p1);
void main(void)
{
char chArray[MAXSIZE];
fLocal1(chArray);
}
I ett lokalt anrop kan du använda pekarparametern för att marschera genom minnet och undersöka innehållet i andra adresser:
/* dump memory (fragment) */
void fLocal1(char * pch1)
{
int i;
for (i = 0; i < MAXSIZE; i++)
printf("%c ", *pch1++);
}
När en klient skickar en pekare till en fjärrprocedur överför klientens stub både pekaren och de data som den pekar på. Om inte pekaren är begränsad till motsvarande data måste alla klientens minne överföras med varje fjärranrop. Genom att framtvinga stark typning i gränssnittsdefinitionen begränsar MIDL bearbetningen av klient-stub till de data som motsvarar den angivna pekaren.
Matrisens storlek och det område med matriselement som överförs till fjärrdatorn kan vara konstant eller variabel. När dessa värden är varierande och därför bestäms vid körning måste du använda attribut i IDL-filen för att ange hur många matriselement som ska överföras. Följande MIDL-attribut stöder matrisgränsningar.
| Attribut | Beskrivning | Standard |
|---|---|---|
| [ first_is] | Index för det första matriselement som överförs. | 0 |
| [ last_is] | Index för det sista matriselement som överfördes. | - |
| [ length_is] | Totalt antal överförda matriselement. | - |
| [ max_is] | Högsta giltiga matrisindexvärde. | - |
| [ min_is] | Lägsta giltiga matrisindexvärde. | 0 |
| [ size_is] | Totalt antal matriselement som allokerats för matrisen. | - |
Not
Attributet min_is implementeras inte i RPC. Det minsta matrisindexet behandlas alltid som noll.