Sdílet prostřednictvím


Top-Level a vložené ukazatele

Abyste pochopili, jak jsou ukazatele a jejich přidružené datové prvky přidělovány v microsoft RPC, musíte rozlišovat mezi ukazateli nejvyšší úrovně a vloženými ukazateli. Je také užitečné odkazovat na sadu všech ukazatelů, které nejsou ukazateli nejvyšší úrovně.

ukazatele nejvyšší úrovně jsou ty, které jsou zadány jako názvy parametrů v prototypech funkce. Ukazatele nejvyšší úrovně a jejich odkazy se vždy přidělují na serveru.

vložené ukazatele jsou ukazatele vložené do datových struktur, jako jsou pole, struktury a sjednocení. Pokud vložené ukazatele zapisují pouze výstup do vyrovnávací paměti a mají hodnotu null na vstupu, může serverová aplikace změnit hodnoty na nenulovou. V tomto případě klientské zástupné procedury přidělují pro tato data novou paměť.

Pokud vložený ukazatel není u klienta před voláním null, zástupné procedury nepřidělují paměť klientovi při vrácení. Místo toho se zástupné procedury pokusí zapsat paměť přidruženou k vložené ukazateli do existující paměti klienta přidruženého k danému ukazateli a přepsat data, která už tam jsou.

Poznámka

Pro data načtená z vyrovnávací paměti nebo zápis do vyrovnávací paměti, která nezadává velikost vyrovnávací paměti, musí být délka výstupu menší nebo rovna vstupní délce. Při zjištění přetečení se vyvolá výjimka RPC. U řetězcových dat se délka výstupu určuje kontrolou délky vstupního řetězce. Výstupní řetězce proto nemohou překročit délku vstupních řetězců. Osvědčeným postupem je vyhnout se tomu tak, že vždy zahrnete parametr určený velikostí, který označuje velikost vyrovnávací paměti.

 

Vložené ukazatele jen pro zápis jsou popsány v Kombinování ukazatelů a směrových atributů.

Termín ukazatele na jiné úrovni odkazuje na všechny ukazatele, které nejsou v prototypu funkce zadané jako názvy parametrů, včetně vložených ukazatelů i více úrovní vnořených ukazatelů.