Modificador /robust
El modificador /robust indica al compilador MIDL que genere información adicional de comprobación de errores, que el motor NDR usa para realizar comprobaciones de integridad en tiempo de ejecución.
midl /robust {/Oicf | /Oif }
-
/Oicf
-
/Oif
-
Estos modificadores son idénticos en su funcionalidad. Especifican el método proxy sin código de serialización y usan cadenas de formato rápido para mejorar el rendimiento. Véase / Oi.
El uso del modificador /robust genera información adicional que permite al motor de representación de datos de red (NDR) realizar la comprobación de errores en tiempo de ejecución en argumentos correlacionados en matrices dinámicas, uniones y punteros de interfaz de salida en aplicaciones DCOM. El modificador /robust solo está disponible en Windows 2000 y versiones posteriores de Windows.
Un argumento correlacionado es un argumento que usa cualquiera de los atributos que permiten determinar el tamaño de un objeto de datos en tiempo de ejecución: size_is, length_is, first_is, last_is, max_is, switch_is y iid_is. De acuerdo con la especificación OSF-DCE de la representación bancaria, este argumento correlacionado aparece en dos lugares diferentes. Por ejemplo, considere un uso típico del atributo size_is :
HRESULT Func1([in] long Size,
[in, size_is(Size)]BAR_TYPE *pBarType);
En este ejemplo, el cliente pasa un valor long que especifica el tamaño de un bloque de BAR_TYPEs (en términos de número de elementos BAR_TYPES) y un puntero al bloque real de BAR_TYPEs. El argumento Size se correlaciona con el argumento pBarType. De acuerdo con la especificación OSF-DCE, el argumento Size se representa dos veces en la conexión, primero como en sí mismo y, a continuación, con la matriz de BAR_TYPE elementos que representan el argumento pBarType. Cada argumento se desenlaza de forma independiente, según su propia representación bancaria. Normalmente, el argumento Size y su copia, que se usa para representar parte del otro argumento, tienen los mismos valores. Sin embargo, si el argumento Size se daña (por ejemplo, cuando el bloque de BAR_TYPES es mayor que el asignado), la aplicación de servidor puede dejar de responder, ya que usa el valor del argumento Size para medir los datos entrantes.
El modificador /robust es necesario para implementar una comprobación de intervalo válida con el atributo range .
midl /robust /Oicf filename.idl