[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 함수는 [string] 특성이 사용되지 않은 counted-string 예제에서와 같이 반환 문자열의 길이를 더 이상 계산하지 않아야 합니다. 이제 스텁은 다음과 같이 길이를 계산합니다.

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