符合性数组

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