Freigeben über


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