/Oi-Schalter
Mit den Schaltern /Oi und /Oic wird der MIDL-Compiler an die Verwendung einer vollständig interpretierten Marshallingmethode gewiesen. Der Schalter /Oicf bietet zusätzliche Leistungsverbesserungen.
midl /{Oi | Oic | Oif | Oicf}
Switch-Optionen
-
Oi
-
Gibt die vollständig interpretierte Methode zum Marshallen von Stubcode an, der zwischen Client und Server übergeben wird.
Hinweis
Dieser Schalter ist veraltet. Es wird empfohlen, den Schalter /Oicf an seiner Stelle zu verwenden.
-
Oic
-
Gibt die codelose Proxymethode des Marshallings an, die alle Funktionen von /Oi bietet und außerdem die Größe des Clientstubcodes für Objektschnittstellen weiter reduziert.
Hinweis
Dieser Schalter ist veraltet. Es wird empfohlen, den Schalter /Oicf an seiner Stelle zu verwenden.
-
Oif oder Oicf
-
Gibt die codelose Proxymethode des Marshallings an, die alle von /Oi und /Oic bereitgestellten Features enthält, aber einen neuen Interpreter (schnelle Formatzeichenfolgen) verwendet, der eine bessere Leistung als /Oi oder /Oic bietet. Dieser Schalter enthält aktuelle RPC-Erweiterungen und wird für moderne RPC-Szenarien empfohlen.
Bemerkungen
Beachten Sie die Einschränkungen im Zusammenhang mit unterstützenden Plattformen.
Der MIDL 3.0-Compiler stellt zwei Methoden zum Marshallen von Code zur Verfügung: vollständig interpretiert ( /Oi, /Oic und /Oicf) und gemischter Modus ( /Os). Ab MIDL-Version 6.0.359 generiert der MIDL-Compiler standardmäßig /Oicf  /robust-Stubs. Einige Sprachfeatures werden in einigen Modi nicht unterstützt. In diesem Fall wechselt der Compiler automatisch in den entsprechenden Modus und gibt eine Warnung aus.
Wenn die Leistung ein Problem ist, kann die Methode im gemischten Modus ( /Os) der beste Ansatz sein. In diesem Modus wählt der Compiler, einige Parameter inline in den generierten Stubs zu marshallen. Dies führt zwar zu einer größeren Stubgröße, bietet jedoch eine höhere Leistung.
Die vollständig interpretierte Methode marshallt Daten vollständig offline. Dies reduziert die Größe des Stubcodes erheblich, führt jedoch zu einer verringerten Leistung. Außerdem gilt bei der vollständig interpretierten Methode ein Grenzwert von 16 Parametern für jede Prozedur. Jede Prozedur, die mehr als 16 Parameter enthält, wird automatisch im /Os-Modus verarbeitet. Unter den interpretierten Modi bietet /Oicf die beste Leistung und /Oi die beste Abwärtskompatibilität.
Sie können die Option /Oif verwenden, wenn Ihre Anwendung MIDL-Features verwendet, die mit MIDL 3.0 eingeführt wurden, z. B. das [ Wire _ Marshal- und das User ] [ _ Marshal-Attribut. ] Wenn Ihre Anwendung Pipes verwendet, müssen Sie die Option /Oif verwenden. Wenn Sie einen anderen Modus angeben, wechselt der MIDL-Compiler zu /Oif.
Um die Art und Weise zu optimieren, wie Ihr Stubcode gemarshallt wird, stellt Microsoft RPC ein [ ACF-Optimierungsattribut ] zur Verfügung. Dieses Attribut wird als Schnittstellenattribut oder Vorgangsattribut verwendet, um den Marshallingmodus für einzelne Schnittstellen oder für einzelne Vorgänge auszuwählen.
Aufrufkonventionen
Stubs, die vom MIDL-Compiler in der interpretierten Methode mithilfe der Schalter /Oi, /Oic oder /Oif generiert werden, müssen während der C-Kompilierung entweder als stdcall- oder cdecl-Prozedur kompiliert werden. Eine PASCAL- oder Fastcall-Aufrufkonvention funktioniert nicht. Darüber hinaus muss der Serverstub als stdcall kompiliert werden.
Beispiele
midl /Oi filename.idl
midl /Oic filename.idl
midl /Oif filename.idl