符合性数组

每次客户端将其传递到服务器上的远程过程时,符合性数组的大小可能会有所不同或一致。 应用程序 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 个元素的数组。