Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Le prototype de fonction suivant utilise un paramètre [unique dans, out, paramètre de chaîne] pour les chaînes d’entrée et de sortie. La chaîne contient d’abord l’entrée du patient et est ensuite remplacée par la réponse du médecin, comme indiqué :
void Analyze([in, out, string, size_is(STRSIZE)] char achInOut[]);
Cet exemple est similaire à celui qui a utilisé une chaîne comptée unique pour l’entrée et la sortie. Comme dans cet exemple, l’attribut [size_is] détermine le nombre d’éléments alloués sur le serveur. L’attribut [chaîne] dirige le stub pour appeler strlen pour déterminer le nombre d’éléments transmis.
Le client alloue toute la mémoire avant l’appel comme suit :
/* client */
char achInOut[STRSIZE];
...
gets_s(achInOut, STRSIZE); // get patient input
Analyze(achInOut);
printf("%s\n", achInOut); // display doctor response
Notez que la fonction d’analyse ne doit plus calculer la longueur de la chaîne de retour comme elle l’a fait dans l’exemple de chaîne comptée où l’attribut [string] n’a pas été utilisé. À présent, les stubs calculent la longueur comme indiqué :
/* server */
void Analyze(char *pchInOut)
{
...
Respond(response, pchInOut); // don't need to call strlen
return; // stubs handle size
}