Condividi tramite


[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
}