Compartilhar via


Matrizes de conformidade

O tamanho de uma matriz compatível pode variar ou estar em conformidade sempre que o cliente passar 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 ele invocar o procedimento remoto. Use colchetes vazios ([ ]) ou um asterisco nos colchetes ([*]) na definição da matriz para indicar uma matriz conformante.

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 pelo parâmetro arraySize.

[
    /*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.