Wskaźniki referencyjne
Wskaźniki referencyjne to najprostsze wskaźniki i wymagają najmniejszej ilości przetwarzania przez wycinkę klienta. Gdy program kliencki przekazuje wskaźnik odniesienia do procedury zdalnej, wskaźnik odniesienia zawsze zawiera adres prawidłowego bloku pamięci. Nadal będzie wskazywać ten sam blok pamięci po zakończeniu procedury zdalnej. Te wskaźniki są używane głównie do implementowania semantyki odwołań i zezwalania na parametry [się] w języku C.
W poniższym przykładzie wartość wskaźnika nie zmienia się podczas wywołania, chociaż zawartość danych pod adresem wskazanym przez wskaźnik może ulec zmianie.
Wskaźnik odniesienia ma następujące cechy:
- Zawsze wskazuje prawidłowy magazyn i nigdy nie ma wartości null.
- Nigdy nie zmienia się podczas wywołania i zawsze wskazuje ten sam magazyn przed wywołaniem i po nim.
- Dane zwrócone z procedury zdalnej są zapisywane w istniejącym magazynie.
- Magazyn wskazywany przez wskaźnik odniesienia nie może uzyskać dostępu do żadnego innego wskaźnika ani żadnej innej nazwy w funkcji.
Użyj atrybutu [ref] , aby określić wskaźniki referencyjne w definicjach interfejsu, jak pokazano w poniższym przykładzie.
/* IDL file */
[
uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
version(1.0)
]
interface RefPtrInterface
{
void RemoteFn([in, out, ref] char *pChar);
}
W tym przykładzie zdefiniowano parametr pChar jako wskaźnik do pojedynczego znaku, a nie tablicy znaków. Jest to parametr [] i wskaźnik odniesienia wskazujący na pamięć, że serwer rutynowy RemoteFn wypełni dane.