[in, out, string]原型
以下函数原型对输入和输出字符串使用单个 [in, out, string] 参数。 该字符串首先包含患者输入,然后被医生响应覆盖,如下所示:
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
}