The following function prototype uses two parameters: an in, string parameter and an out, string parameter.
void Analyze(
[in, string] *pszInput,
[out, string, size_is(STRSIZE)] *pszOutput);
The first parameter is in only. This input string is only transmitted from the client to the server and is used as the basis for further processing by the server. The string is not modified and is not required again by the client, so it does not have to be returned to the client.
The second parameter, representing the doctor's response, is out only. This response string is only transmitted from the server to the client. The allocation size is provided so the server stubs can allocate memory for it. Because pszOutput is a ref pointer, the client must have sufficient memory allocated for the string before the call. The response string is written into this area of memory when the remote procedure returns.