Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The following function prototype uses a single [in, out, string] parameter for both the input and output strings. The string first contains patient input and is then overwritten with the doctor response as shown:
void Analyze([in, out, string, size_is(STRSIZE)] char achInOut[]);
This example is similar to the one that employed a single-counted string for both input and output. As with that example, the [size_is] attribute determines the number of elements allocated on the server. The [string] attribute directs the stub to call strlen to determine the number of transmitted elements.
The client allocates all memory before the call as:
/* client */
char achInOut[STRSIZE];
...
gets_s(achInOut, STRSIZE); // get patient input
Analyze(achInOut);
printf("%s\n", achInOut); // display doctor response
Note that the Analyze function no longer must calculate the length of the return string as it did in the counted-string example where the [string] attribute was not used. Now the stubs calculate the length as shown:
/* server */
void Analyze(char *pchInOut)
{
...
Respond(response, pchInOut); // don't need to call strlen
return; // stubs handle size
}