Freigeben über


[in, out, string] Prototyp

Der folgende Funktionsprototyp verwendet einen einzelnen [in, out, Zeichenfolge] 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, das eine einzelne Zeichenfolge für Eingabe und Ausgabe verwendet hat. Wie in diesem Beispiel bestimmt das Attribut [size_is] die Anzahl der auf dem Server zugeordneten Elemente. Das Attribut [Zeichenfolge] leitet den Stub an, um strlen aufzurufen, um die Anzahl der übertragenen Elemente zu bestimmen.

Der Client weist vor dem Aufruf alle Arbeitsspeicher 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 Analysefunktion die Länge der Rückgabezeichenfolge nicht mehr berechnen muss, wie im Beispiel für Zeichenfolgen mit Zählung, in dem das [Zeichenfolge] Attribut nicht verwendet wurde. Jetzt 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
}