[in, out, string]原型

以下函数原型对输入和输出字符串使用单个 [inoutstring] 参数。 该字符串首先包含患者输入,然后被医生响应覆盖,如下所示:

void Analyze([in, out, string, size_is(STRSIZE)] char  achInOut[]);

此示例类似于对输入和输出使用单计数字符串的示例。 与该示例一样,[size_is] 属性确定服务器上分配的元素数。 [string] 属性指示存根调用 strlen 以确定传输的元素数。

客户端在调用之前分配所有内存,如下所示:

/* client */
char achInOut[STRSIZE];
...
gets_s(achInOut, STRSIZE);            // get patient input
Analyze(achInOut);
printf("%s\n", achInOut);  // display doctor response

请注意,Analyze 函数不再需要像在 counted 字符串示例中那样计算返回字符串的长度,其中没有使用 [string] 属性。 现在,存根计算长度,如下所示:

/* server */
void Analyze(char *pchInOut)
{
   ...
   Respond(response, pchInOut); // don't need to call strlen
   return;                      // stubs handle size
}