Top-Level és beágyazott mutatók
Annak megértéséhez, hogy a mutatók és a hozzájuk tartozó adatelemek hogyan vannak lefoglalva a Microsoft RPC-ben, meg kell különböztetnie felső szintű mutatókat és beágyazott mutatókat. Az is hasznos, ha az összes olyan mutatóra hivatkozik, amely nem felső szintű mutató.
legfelső szintű mutatók azok, amelyek a függvény prototípusaiban megadott paraméterek neveként vannak megadva. A legfelső szintű mutatók és a hivatkozásaik mindig a kiszolgálón vannak lefoglalva.
Beágyazott mutatók adatstruktúrákba, például tömbökbe, struktúrákba és egyesítőkbe ágyazott mutatók. Ha a beágyazott mutatók csak egy pufferbe írnak kimenetet, és a bemeneten null értékűek, a kiszolgálóalkalmazás nem null értékűre módosíthatja az értékeket. Ebben az esetben az ügyfél csonkok új memóriát foglalnak le ezekhez az adatokhoz.
Ha a beágyazott mutató nem null értékű az ügyfélen a hívás előtt, a csonkok nem foglalnak le memóriát az ügyfélen visszatéréskor. Ehelyett a csonkok megkísérlik írni a beágyazott mutatóhoz társított memóriát a mutatóhoz társított ügyfél meglévő memóriájába, felülírva a már ott lévő adatokat.
Jegyzet
A pufferből vagy pufferbe írt adatok esetében, amelyek nem határozzák meg a puffer méretét, a kimeneti hossznak kisebbnek vagy egyenlőnek kell lennie a bemeneti hossznál. Túlcsordulás észlelésekor RPC-kivétel keletkezik. A sztringadatok esetében a kimeneti hossz a bemeneti sztring hosszának ellenőrzésével határozható meg. Ezért a kimeneti sztringek nem haladhatják meg a bemeneti sztringek hosszát. Az ajánlott eljárás az, hogy ezt elkerüljük, ha mindig megadunk egy méretben megadott paramétert a puffer méretének jelzéséhez.
A csak beágyazott írási mutatókat a mutató és az irányított attribútumok kombinálása .
A nemtop szintű mutatók kifejezés az összes olyan mutatóra vonatkozik, amely nem paraméternévként van megadva a függvény prototípusában, beleértve a beágyazott mutatókat és a beágyazott mutatók több szintjét is.