Condividi tramite


Matrici conformi

Le dimensioni di una matrice conforme possono variare o conformarsi ogni volta che il client lo passa a una routine remota nel server. La definizione dell'interfaccia nel file MIDL dell'applicazione consente al client di specificare le dimensioni della matrice ogni volta che richiama la procedura remota. Usare parentesi quadre vuote ([ ]) o un asterisco nelle parentesi quadre ([*]) nella definizione della matrice per indicare una matrice conforme.

L'esempio seguente contiene la definizione di una procedura remota in un'interfaccia in un file MIDL. Il client specifica le dimensioni della matrice che passa al server tramite la matrice di parametriSize.

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

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

La definizione dell'interfaccia usa l'attributo MIDL [size_is] per specificare le dimensioni della matrice che il client passa al server. Se si preferisce indicare il valore massimo dei numeri di indice della matrice, usare invece l'attributo [max_is] . Per altre informazioni su questi attributi MIDL, vedere Attributi della matrice.

Il frammento di codice seguente illustra come un client potrebbe richiamare la procedura remota definita nel file MIDL precedente.

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

Questo frammento chiama la procedura remota MyRemoteProc due volte. Nella prima chiamata passa una matrice di 20 elementi. Nella seconda chiamata, il client passa una matrice di 200 elementi.