Pointeurs de référence
Les pointeurs de référence sont les pointeurs les plus simples et nécessitent le moins de traitement par le stub client. Lorsqu’un programme client passe un pointeur de référence à une procédure distante, le pointeur de référence contient toujours l’adresse d’un bloc de mémoire valide. Elle pointe toujours vers le même bloc de mémoire lorsque la procédure distante se termine. Ces pointeurs sont principalement utilisés pour implémenter la sémantique de référence et pour autoriser les [ paramètres out ] en C.
Dans l’exemple suivant, la valeur du pointeur ne change pas pendant l’appel, bien que le contenu des données à l’adresse indiquée par le pointeur puisse changer.

Un pointeur de référence présente les caractéristiques suivantes :
- Il pointe toujours vers un stockage valide et n’a jamais la valeur null.
- Il ne change jamais pendant un appel et pointe toujours vers le même stockage avant et après l’appel.
- Les données retournées par la procédure distante sont écrites dans le stockage existant.
- Le stockage désigné par un pointeur de référence n’est pas accessible par un autre pointeur ou tout autre nom dans la fonction.
Utilisez l' [ ] attribut ref pour spécifier des pointeurs de référence dans les définitions d’interface, comme indiqué dans l’exemple suivant.
/* IDL file */
[
uuid(ba209999-0c6c-11d2-97cf-00c04f8eea45),
version(1.0)
]
interface RefPtrInterface
{
void RemoteFn([in, out, ref] char *pChar);
}
Cet exemple définit le paramètre pChar comme un pointeur vers un caractère unique, et non un tableau de caractères. Il s’agit d’un paramètre de [ sortie ] et d’un pointeur de référence qui pointe vers la mémoire que la routine de serveur RemoteFn remplira avec des données.