Referenspekare
Referenspekare är de enklaste pekarna och kräver minst bearbetning av klientens stub. När ett klientprogram skickar en referenspekare till en fjärrprocedur innehåller referenspekaren alltid adressen till ett giltigt minnesblock. Den pekar fortfarande på samma minnesblock när fjärrproceduren är klar. Dessa pekare används främst för att implementera referenssemantik och för att tillåta parametrarna [ut] i C.
I följande exempel ändras inte pekarens värde under anropet, även om innehållet i data på den adress som anges av pekaren kan ändras.
En referenspekare har följande egenskaper:
- Den pekar alltid på giltig lagring och har aldrig värdet NULL-.
- Den ändras aldrig under ett anrop och pekar alltid på samma lagring före och efter anropet.
- Data som returneras från fjärrproceduren skrivs till den befintliga lagringen.
- Lagringen som pekar på med en referenspekare kan inte nås av någon annan pekare eller något annat namn i funktionen.
Använd attributet [ref] för att ange referenspekare i gränssnittsdefinitioner, som du ser i följande exempel.
/* IDL file */
[
uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
version(1.0)
]
interface RefPtrInterface
{
void RemoteFn([in, out, ref] char *pChar);
}
I det här exemplet definieras parametern pChar som en pekare till ett enda tecken, inte en matris med tecken. Det är en parameter [ut] och en referenspekare som pekar på minne som serverrutinen RemoteFn fyller med data.