Matrices conformes
El tamaño de una matriz conforme puede variar o ajustarse cada vez que el cliente lo pasa a un procedimiento remoto en el servidor. La definición de interfaz del archivo MIDL de la aplicación permite al cliente especificar el tamaño de la matriz cada vez que invoca el procedimiento remoto. Use corchetes vacíos ([ ]) o un asterisco entre corchetes ([*]) en la definición de matriz para indicar una matriz conforme.
El ejemplo siguiente contiene la definición de un procedimiento remoto en una interfaz de un archivo MIDL. El cliente especifica el tamaño de la matriz que pasa al servidor mediante el parámetro arraySize.
[
/*Attributes are defined here. */
]
interface MyInterface
{
MyRemoteProc(
long lArraySize,
[size_is(lArraySize)] char achArray[*]
);
/* Other interface procedures are defined here. */
}
La definición de interfaz usa el atributo MIDL [size_is] para especificar el tamaño de la matriz que el cliente pasa al servidor. Si prefiere indicar el valor máximo de los números de índice de la matriz, use el atributo [max_is] en su lugar. Para obtener más información sobre estos atributos MIDL, vea Atributos de matriz.
En el fragmento de código siguiente se muestra cómo un cliente podría invocar el procedimiento remoto definido en el archivo 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);
Este fragmento llama al procedimiento remoto MyRemoteProc dos veces. En la primera invocación pasa una matriz de 20 elementos. En la segunda llamada, el cliente pasa una matriz de 200 elementos.