Comutador /Oi
As opções /Oi e /Oic direcionam o compilador MIDL para usar um método de marshaling totalmente interpretado. A opção /Oicf fornece aprimoramentos de desempenho adicionais.
midl /{Oi | Oic | Oif | Oicf}
Opções de Alternância
-
Oi
-
Especifica o método totalmente interpretado para marshaling de código stub passado entre o cliente e o servidor.
Observação
Essa opção está obsoleta. É recomendável que a opção /Oicf seja usada em seu lugar.
-
Oic
-
Especifica o método de proxy sem código de marshaling que fornece todos os recursos de /Oi e também reduz ainda mais o tamanho do código stub do cliente para interfaces de objeto.
Observação
Essa opção está obsoleta. É recomendável que a opção /Oicf seja usada em seu lugar.
-
Oif ou Oicf
-
Especifica o método de marshaling de proxy sem código que inclui todos os recursos fornecidos por /Oi e /Oic , mas usa um novo interpretador (cadeias de caracteres de formato rápido) que fornece melhor desempenho do que /Oi ou /Oic. Essa opção inclui aprimoramentos de RPC recentes e é recomendada para cenários RPC modernos.
Comentários
Observe as restrições relacionadas às plataformas de suporte.
O compilador MIDL 3.0 fornece dois métodos para marshaling de código: totalmente interpretado ( /Oi, /Oic e /Oicf) e modo misto ( /Os). A partir do MIDL versão 6.0.359, o compilador MIDL gera /Oicf /robust stubs por padrão. Alguns recursos de linguagem não têm suporte em alguns modos. Nesse caso, o compilador alterna automaticamente para o modo apropriado e emite um aviso.
Se o desempenho for uma preocupação, o método de modo misto ( /Os) pode ser a melhor abordagem. Nesse modo, o compilador opta por realizar marshaling de alguns parâmetros embutidos nos stubs gerados. Embora isso resulte em um tamanho maior de stub, ele oferece maior desempenho.
O método totalmente interpretado realiza marshaling de dados completamente offline. Isso reduz consideravelmente o tamanho do código stub, mas resulta em desempenho reduzido. Além disso, com o método totalmente interpretado, há um limite de 16 parâmetros para cada procedimento. Qualquer procedimento que contenha mais de 16 parâmetros será processado automaticamente no modo /Os . Entre os modos interpretados, /Oicf oferece o melhor desempenho e /Oi oferece a melhor compatibilidade com versões anteriores.
Talvez você queira usar a opção /Oif se o aplicativo usar recursos MIDL introduzidos com MIDL 3.0, como os atributos [wire_marshal] e [user_marshal]. Se o aplicativo usar pipes , você deverá usar a opção /Oif ; se você especificar outro modo, o compilador MIDL mudará para /Oif.
Para ajustar a maneira como o código stub é empacotado, o Microsoft RPC fornece um atributo ACF [optimize]. Esse atributo é usado como um atributo de interface ou atributo de operação para selecionar o modo de marshaling para interfaces individuais ou para operações individuais.
Convenções de chamada
Os stubs gerados pelo compilador MIDL no método interpretado usando as opções /Oi, /Oic ou /Oif devem ser compilados como uma stdcall ou um procedimento cdecl durante a compilação C. Uma convenção de chamada PASCAL ou Fastcall não funcionará. Além disso, o stub do servidor deve ser compilado como stdcall.
Exemplos
midl /Oi filename.idl
midl /Oic filename.idl
midl /Oif filename.idl
Confira também