[in, out, string] Prototipo
Il prototipo di funzione seguente usa un singolo parametro [in, out, string] per le stringhe di input e di output. La stringa contiene prima l'input del paziente e viene quindi sovrascritta con la risposta del medico, come illustrato:
void Analyze([in, out, string, size_is(STRSIZE)] char achInOut[]);
Questo esempio è simile a quello che usa una stringa con conteggio singolo sia per l'input che per l'output. Come in questo esempio, l'attributo [size_is] determina il numero di elementi allocati nel server. L'attributo [string] indirizza lo stub a chiamare strlen per determinare il numero di elementi trasmessi.
Il client alloca tutta la memoria prima della chiamata come:
/* client */
char achInOut[STRSIZE];
...
gets_s(achInOut, STRSIZE); // get patient input
Analyze(achInOut);
printf("%s\n", achInOut); // display doctor response
Si noti che la funzione Analyze non deve più calcolare la lunghezza della stringa restituita come nell'esempio di stringa con conteggiata in cui l'attributo [string] non è stato usato. Ora gli stub calcolano la lunghezza come illustrato:
/* server */
void Analyze(char *pchInOut)
{
...
Respond(response, pchInOut); // don't need to call strlen
return; // stubs handle size
}