Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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