共用方式為


[in, size_is] 和 [out, size_is] 原型

下列函式原型使用兩個計算的字串。 開發人員必須在用戶端和伺服器上撰寫程式碼,以追蹤字元陣列長度,並傳遞參數,告知存根要傳輸的陣列元素數目。

void Analyze(
    [in,  length_is(cbIn), size_is(STRSIZE)]    char  achIn[],
    [in]                                        long  cbIn,
    [out, length_is(*pcbOut), size_is(STRSIZE)] char  achOut[],
    [out]                                       long *pcbOut);

請注意,描述陣列長度的參數會以與陣列相同的方向傳輸: cbInachIn 是 [in] 參數,而 cbOutachOut 是 [out] 參數。 做為 [out] 參數, 參數必須 遵循 C 慣例,並宣告為指標。

用戶端程式代碼會計算字串中的字元數,包括尾端零,再呼叫遠端程式,如下所示:

/* client */
char achIn[STRSIZE], achOut[STRSIZE];
long cbIn, cbOut;
...
gets_s(achIn, STRSIZE);                   // get patient input
cbIn = strlen(achIn) + 1;      // transmitted elements
Analyze(achIn, cbIn, achOut, &cbOut);

伺服器上的遠端程式會在 cbOut 中提供傳回緩衝區的長度,如下所示:

/* server */
void Analyze(char *pchIn,
             long cbIn,
             char *pchOut,
             long *pcbOut)
{
   ...
   *pcbOut = strlen(pchOut) + 1; // transmitted elements
   return;
}

當已知參數為字串時,可以使用 [string] 屬性。 這個屬性會指示存根計算字串大小,因而消除與 [length is] 參數相關聯的額外負荷。 此外,它會指示存根確認字串在將 參數傳遞至應用程式之前,先終止 Null