[in, out, string] Prototyp
Der folgende Funktionsprototyp verwendet einen einzelnen [in, out, string]-Parameter für die Eingabe- und Ausgabezeichenfolgen. Die Zeichenfolge enthält zuerst die Patienteneingabe und wird dann wie gezeigt mit der Arztantwort überschrieben:
void Analyze([in, out, string, size_is(STRSIZE)] char achInOut[]);
Dieses Beispiel ähnelt dem Beispiel, bei dem eine ein- und ausgezählte Zeichenfolge verwendet wurde. Wie in diesem Beispiel bestimmt das Attribut [size_is] die Anzahl der elemente, die auf dem Server zugeordnet sind. Das Attribut [string] weist den Stub an, strlen aufzurufen, um die Anzahl der übertragenen Elemente zu bestimmen.
Der Client ordnet den gesamten Arbeitsspeicher vor dem Aufruf zu:
/* client */
char achInOut[STRSIZE];
...
gets_s(achInOut, STRSIZE); // get patient input
Analyze(achInOut);
printf("%s\n", achInOut); // display doctor response
Beachten Sie, dass die Analyze-Funktion die Länge der Rückgabezeichenfolge nicht mehr berechnen muss, wie dies im Beispiel mit einer zählenden Zeichenfolge der Vorgang war, bei dem das Attribut [string] nicht verwendet wurde. Nun berechnen die Stubs die Länge wie gezeigt:
/* server */
void Analyze(char *pchInOut)
{
...
Respond(response, pchInOut); // don't need to call strlen
return; // stubs handle size
}