一致性陣列
一致性陣列的大小可能會隨著用戶端每次將它傳遞至伺服器上的遠端程式而有所不同或一致。 應用程式 MIDL 檔案中的介面定義可讓用戶端在每次叫用遠端程式時指定陣列的大小。 在陣列定義中使用空的方括弧 ([ ]) 或方括弧 ([*]) 中的星號來表示一致性陣列。
下列範例包含 MIDL 檔案中介面中遠端程式的定義。 用戶端會指定它由參數 arraySize傳遞給伺服器的陣列大小。
[
/*Attributes are defined here. */
]
interface MyInterface
{
MyRemoteProc(
long lArraySize,
[size_is(lArraySize)] char achArray[*]
);
/* Other interface procedures are defined here. */
}
介面定義會使用 MIDL 屬性 [size_is] 來指定用戶端傳遞給伺服器的陣列大小。 如果您想要指出陣列索引編號的最大值,請改用 [max_is] 屬性。 如需這些 MIDL 屬性的詳細資訊,請參閱 陣列屬性。
下列程式碼片段說明用戶端如何叫用上述 MIDL 檔案中定義的遠端程式。
long lArrayLength = 20;
char achCharArray[20], achAnotherCharArray[200];
// Code to store 20 chars in achCharArray goes here.
MyRemoteProc(
lArrayLength ,
achCharArray);
lArrayLength = 200;
// Code to store 200 chars in achAnotherCharArray goes here.
MyRemoteProc(
lArrayLength ,
achAnotherCharArray);
此片段會呼叫遠端程式 MyRemoteProc 兩次。 在第一次叫用時,它會傳遞 20 個元素的陣列。 第二次呼叫時,用戶端會傳遞 200 個元素的陣列。