Schalter "/robust"
Der Schalter /robust weist den MIDL-Compiler an, zusätzliche Fehlerüberprüfungsinformationen zu generieren, die die NDR-Engine zur Laufzeit verwendet, um Integritätsprüfungen durchzuführen.
midl /robust {/Oicf | /Oif }
Optionen wechseln
-
/Oicf
-
/Oif
-
Diese Schalter sind in ihrer Funktionalität identisch. Sie geben die codelose Proxymethode des Marshallings an und verwenden schnelle Formatzeichenfolgen, um die Leistung zu verbessern. Siehe / Oi.
Bemerkungen
Durch die Verwendung des /robust-Schalters werden zusätzliche Informationen generiert, mit denen die Netzwerkdatendarstellungs-Engine (NDR) laufzeitbezogene Fehlerüberprüfungen für korrelierte Argumente in dynamischen Arrays, Unions und in out-Schnittstellenzeigern in DCOM-Anwendungen durchführen kann. Der Schalter /robust ist nur unter Windows 2000 und höheren Versionen von Windows verfügbar.
Ein korreliertes Argument ist ein Argument, das eines der Attribute verwendet, mit denen die Größe eines Datenobjekts zur Laufzeit bestimmt werden kann: size_is, length_is, first_is, last_is, max_is, switch_is und iid_is. Gemäß der OSF-DCE-Spezifikation für die Drahtdarstellung wird dieses korrelierte Argument an zwei verschiedenen Stellen angezeigt. Betrachten Sie beispielsweise eine typische Verwendung des attributs size_is :
HRESULT Func1([in] long Size,
[in, size_is(Size)]BAR_TYPE *pBarType);
In diesem Beispiel übergibt der Client einen long-Wert, der die Größe eines Blocks von BAR_TYPEs (in Form der Anzahl der BAR_TYPES-Elemente) angibt, und einen Zeiger auf den tatsächlichen Block von BAR_TYPEs. Das Argument Size korreliert mit dem Argument pBarType. In Übereinstimmung mit der OSF-DCE-Spezifikation wird das Argument Size zweimal auf der Leitung dargestellt– zuerst als sich selbst und dann mit dem Array von BAR_TYPE Elementen, die das pBarType-Argument darstellen. Jedes Argument wird unabhängig voneinander getrennt, entsprechend seiner eigenen Drahtdarstellung. Normalerweise haben das Argument Size und seine Kopie, die verwendet wird, um einen Teil des anderen Arguments darzustellen, die gleichen Werte. Wenn das Argument Size jedoch beschädigt wird (z. B. wenn der Block von BAR_TYPES größer als der zugeordnete ist), reagiert die Serveranwendung möglicherweise nicht mehr, da sie den Wert des Arguments Size verwendet, um eingehende Daten zu messen.
Der Schalter /robust ist erforderlich, um eine gültige Bereichsüberprüfung mit dem Range-Attribut zu implementieren.
Beispiele
midl /robust /Oicf filename.idl
Weitere Informationen