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


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.