Megosztás a következőn keresztül:


Referenciamutatók

A referenciamutatók a legegyszerűbb mutatók, és az ügyfélcsomópont által a legkisebb mértékű feldolgozást igénylik. Ha egy ügyfélprogram egy referenciamutatót egy távoli eljárásnak ad át, a referenciamutató mindig egy érvényes memóriablokk címét tartalmazza. A távoli eljárás befejeződésekor a rendszer továbbra is ugyanarra a memóriablokkra mutat. Ezeket a mutatókat főként referencia-szemantikák implementálásához használják, és lehetővé teszik a [ki] paraméterek használatát C-ben.

Az alábbi példában a mutató értéke nem változik a hívás során, bár a mutató által megjelölt címen lévő adatok tartalma változhat.

statikus referenciamutató címén változó adatok

A referenciamutató a következő jellemzőkkel rendelkezik:

  • Mindig érvényes tárolóra mutat, és soha nem rendelkezik a NULL értékkel.
  • A hívás során soha nem változik, és mindig ugyanarra a tárterületre mutat a hívás előtt és után.
  • A távoli eljárásból visszaadott adatok a meglévő tárolóba lesznek beírva.
  • A referenciamutató által mutatott tár nem érhető el más mutatóval vagy a függvény bármely más nevével.

A [ref] attribútummal referenciamutatókat adhat meg a felületdefiníciókban, ahogyan az az alábbi példában is látható.

/* IDL file */
[ 
  uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
  version(1.0)
]
interface RefPtrInterface
{
  void RemoteFn([in, out, ref] char *pChar);
}

Ez a példa a pChar paramétert egy karakterre mutató mutatóként határozza meg, nem pedig karaktertömbként. Ez egy [ki] paraméter és egy referenciamutató, amely arra a memóriára mutat, amelyet a RemoteFn kiszolgálói rutin adatokkal fog kitölteni.