/Oi switch

Przełączniki /Oi i /Oic kierują kompilator MIDL do korzystania z w pełni interpretowanej metody marshalingu. Przełącznik /Oicf zapewnia dodatkowe ulepszenia wydajności.

midl /{Oi | Oic | Oif | Oicf}

Opcje przełącznika

Oi

Określa w pełni interpretowaną metodę marshalingu kodu wycinkowego przekazywanego między klientem a serwerem.

Uwaga / Notatka

Ten przełącznik jest przestarzały. Zaleca się, aby przełącznik /Oicf był używany w jego miejscu.

 

Oic

Określa bez kodową metodę serwera proxy marshalingu, która udostępnia wszystkie funkcje /Oi , a także dodatkowo zmniejsza rozmiar kodu zastępczego klienta dla interfejsów obiektów.

Uwaga / Notatka

Ten przełącznik jest przestarzały. Zaleca się, aby przełącznik /Oicf był używany w jego miejscu.

 

Oif lub Oicf

Określa bez kodową metodę serwera proxy marshaling, która zawiera wszystkie funkcje udostępniane przez /Oi i /Oic , ale używa nowego interpretera (ciągi szybkiego formatu), który zapewnia lepszą wydajność niż /Oi lub /Oic. Ten przełącznik zawiera najnowsze ulepszenia RPC i jest zalecany w przypadku nowoczesnych scenariuszy RPC.

Uwagi

Należy pamiętać o ograniczeniach związanych z platformami pomocniczymi.

Kompilator MIDL 3.0 udostępnia dwie metody marshalingu kodu: w pełni interpretowane ( /Oi, /Oic i /Oicf) i tryb mieszany ( /Os). Począwszy od wersji MIDL 6.0.359, kompilator MIDL domyślnie generuje wycinki /Oicf/robust . Niektóre funkcje językowe nie są obsługiwane w niektórych trybach. W takim przypadku kompilator automatycznie przełącza się do odpowiedniego trybu i wyświetla ostrzeżenie.

Jeśli wydajność jest problemem, metoda trybu mieszanego ( /Os) może być najlepszym podejściem. W tym trybie kompilator wybiera przeprowadzanie marshalingu niektórych parametrów wbudowanych w wygenerowanych wycinkach. Chociaż powoduje to zwiększenie rozmiaru wycinków, oferuje zwiększoną wydajność.

W pełni interpretowana metoda marshaluje dane całkowicie w trybie offline. Znacznie zmniejsza to rozmiar kodu wycinkowego, ale powoduje zmniejszenie wydajności. Ponadto w przypadku metody w pełni interpretowanej istnieje limit 16 parametrów dla każdej procedury. Każda procedura zawierająca więcej niż 16 parametrów zostanie automatycznie przetworzona w trybie /Os . Spośród trybów interpretowanych /Oicf oferuje najlepszą wydajność i /Oi oferuje najlepszą zgodność z poprzednimi wersjami.

Możesz użyć opcji /Oif , jeśli aplikacja używa funkcji MIDL, które zostały wprowadzone w MIDL 3.0, takich jak [wire_marshal] i [user_marshal] atrybutów. Jeśli aplikacja używa potoków , należy użyć opcji /Oif ; Jeśli określisz inny tryb, kompilator MIDL przełączy się na /Oif.

Aby dostosować sposób marshalowania kodu wycinkowego, Microsoft RPC udostępnia atrybut ACF [optymalizowanie]. Ten atrybut jest używany jako atrybut interfejsu lub atrybut operacji, aby wybrać tryb marshalingu dla poszczególnych interfejsów lub dla poszczególnych operacji.

Konwencje wywoływania

Wycinki generowane przez kompilator MIDL w metodzie interpretowanej przy użyciu /Oi, /Oic lub /Oif przełączników muszą być kompilowane jako stdcall lub procedury cdecl podczas kompilacji języka C. Konwencja wywołania PASCAL lub Fastcall nie będzie działać. Ponadto wycinkę serwera należy skompilować jako stdcall.

Examples

midl /Oi filename.idl

midl /Oic filename.idl

midl /Oif filename.idl

Zobacz także

/Solidne

/no_robust

Ogólna składnia wiersza polecenia MIDL

/Os

Optymalizacji

/no_format_opt