Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Jeśli istnieje wiele poziomów wskaźników, atrybuty są skojarzone ze wskaźnikiem najbliżej nazwy zmiennej. Klient jest nadal odpowiedzialny za przydzielanie dowolnej pamięci skojarzonej z odpowiedzią.
Poniższy przykład umożliwia wywołanie serwera przez wycinkę bez wcześniejszego poznania ilości danych, które zostaną zwrócone:
[
uuid( ...),
version(3.3),
]
interface AnInterface
{
HRESULT GetBars([out] long * pSize,
[out, size_is( , *pSize)]
BAR ** ppBar);//BAR type defined elsewhere
}
W tym przykładzie wycinkowy przekazuje serwerowi unikatowy wskaźnik, który serwer inicjuje do null. Następnie serwer przydziela blok BARs, ustawia wskaźnik, ustawia argument rozmiaru i zwraca. Należy pamiętać, że aby serwer miał wpływ na obiekt wywołujący, należy przekazać wskaźnik [ref] do wskaźnika [unikatowy] do danych. Zwróć również uwagę na przecinek w [size_is( , *pSize )], który wskazuje, że wskaźnik najwyższego poziomu nie jest wskaźnikiem o rozmiarze, ale że wskaźnik niższego poziomu jest.
Po stronie klienta wycinków ustawia wartość *ppBar na null przed wywołaniem procedury zdalnej. Następnie wycinków przydziela i unmarshals arry obiektów BAR. Argument rozmiaru wskazuje rozmiar bloku (i liczbę niemarshalowanych BARs). Klient musi zwolnić zwracaną tablicę obiektów BAR, gdy nie jest już wymagana.
Tematy pokrewne