attribut string (RPC)
L’attribut [ string] indique que le paramètre est un pointeur vers un tableau de type char, octet ou w_char. Comme pour un tableau conforme, la taille d’un paramètre [string] est déterminée au moment de l’exécution. Contrairement à un tableau conforme, le développeur n’a pas besoin de fournir la longueur associée au tableau : l’attribut [string] indique au stub de déterminer la taille du tableau en appelant strlen. Un attribut [string] ne peut pas être utilisé en même temps que les attributs [ length_is] ou [ last_is].
La combinaison d’attributs [in, string] dirige le stub pour passer la chaîne du client au serveur uniquement. La quantité de mémoire allouée sur le serveur est identique à la taille de chaîne transmise plus une.
Les attributs [ out, string] dirigent le stub pour passer la chaîne du serveur au client uniquement. La conception d’appel par valeur du langage C insiste pour que tous les paramètres [out] soient des pointeurs.
Le paramètre [out] doit être un pointeur et, par défaut, tous les paramètres de pointeur sont des pointeurs de référence. Le pointeur de référence ne change pas pendant l’appel , il pointe vers la même mémoire qu’avant l’appel. Pour les pointeurs de chaîne, la contrainte supplémentaire du pointeur de référence signifie que le client doit allouer suffisamment de mémoire valide avant d’effectuer l’appel de la procédure distante. Les stubs transmettent la chaîne que les attributs [out, string] indiquent dans la mémoire déjà allouée côté client.
Les rubriques suivantes décrivent les prototypes de paramètres de procédure distante pour les chaînes :