Udostępnij za pośrednictwem


Top-Level i osadzone wskaźniki

Aby zrozumieć, w jaki sposób wskaźniki i skojarzone z nimi elementy danych są przydzielane w RPC firmy Microsoft, należy rozróżnić wskaźniki najwyższego poziomu i osadzone wskaźniki. Warto również odwołać się do zestawu wszystkich wskaźników, które nie są wskaźnikami najwyższego poziomu.

wskaźniki najwyższego poziomu to te, które są określane jako nazwy parametrów w prototypach funkcji. Wskaźniki najwyższego poziomu i ich odwołania są zawsze przydzielane na serwerze.

Osadzone wskaźniki to wskaźniki osadzone w strukturach danych, takich jak tablice, struktury i związki. Gdy osadzone wskaźniki zapisują dane wyjściowe tylko do buforu i mają wartość null w danych wejściowych, aplikacja serwera może zmienić ich wartości na wartość inną niż null. W takim przypadku wycinki klienta przydzielają nową pamięć dla tych danych.

Jeśli osadzony wskaźnik nie ma wartości null na kliencie przed wywołaniem, wycinki nie przydzielają pamięci na kliencie po powrocie. Zamiast tego wycinki próbują zapisać pamięć skojarzoną z osadzonym wskaźnikiem do istniejącej pamięci na kliencie skojarzonym z tym wskaźnikiem, zastępując już tam dane.

Nuta

W przypadku danych odczytywanych z buforu lub zapisu do buforu, które nie określają rozmiaru buforu, długość danych wyjściowych musi być mniejsza lub równa długości wejściowej. Wyjątek RPC jest zgłaszany po wykryciu przepełnienia. W przypadku danych ciągu długość danych wyjściowych jest określana przez sprawdzenie długości ciągu wejściowego. W związku z tym ciągi wyjściowe nie mogą przekraczać długości ciągów wejściowych. Wskazówki dotyczące najlepszych rozwiązań polegają na tym, aby uniknąć tego, zawsze dołączając określony rozmiar parametru, aby wskazać rozmiar buforu.

 

Osadzone wskaźniki tylko do zapisu są omawiane w łączenie wskaźników i atrybutów kierunkowych.

Termin wskaźników innych niż na poziomie odnosi się do wszystkich wskaźników, które nie są określone jako nazwy parametrów w prototypie funkcji, w tym zarówno osadzone wskaźniki, jak i wiele poziomów zagnieżdżonych wskaźników.