Compartilhar via


Matrizes em conformidade

O tamanho de uma matriz compatível pode variar ou estar em conformidade sempre que o cliente a passa para um procedimento remoto no servidor. A definição de interface no arquivo MIDL do aplicativo permite que o cliente especifique o tamanho da matriz sempre que invocar o procedimento remoto. Use colchetes vazios ([ ]) ou um asterisco entre colchetes ([*]) na definição de matriz para indicar uma matriz compatível.

O exemplo a seguir contém a definição de um procedimento remoto em uma interface em um arquivo MIDL. O cliente especifica o tamanho da matriz que ele passa para o servidor pela matriz de parâmetroSize.

[
    /*Attributes are defined here. */
]
interface MyInterface
{
    MyRemoteProc(
         long lArraySize,
         [size_is(lArraySize)] char achArray[*]
    );

    /* Other interface procedures are defined here. */
}

A definição de interface usa o atributo MIDL [size_is] para especificar o tamanho da matriz que o cliente passa para o servidor. Se preferir indicar o valor máximo dos números de índice da matriz, use o atributo [max_is]. Para obter mais informações sobre esses atributos MIDL, consulte Atributos de matriz.

O fragmento de código a seguir ilustra como um cliente pode invocar o procedimento remoto definido no arquivo MIDL anterior.

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);

Esse fragmento chama o procedimento remoto MyRemoteProc duas vezes. Na primeira invocação, ele passa uma matriz de 20 elementos. Na segunda chamada, o cliente passa uma matriz de 200 elementos.