Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Os switches /Oi e /Oic direcionam o compilador MIDL para usar um método de marshaling totalmente interpretado. O interruptor /Oicf oferece melhorias adicionais de desempenho.
midl /{Oi | Oic | Oif | Oicf}
Opções de Troca
-
Ei
-
Especifica o método totalmente interpretado para o marshaling do código stub passado entre cliente e servidor.
Observação
Este interruptor está obsoleto. Recomenda-se que o interruptor /Oicf seja usado em seu lugar.
-
Oic
-
Especifica o método proxy sem código de marshaling que fornece todas as funcionalidades do /Oi e também reduz ainda mais o tamanho do código stub do cliente para interfaces de objetos.
Observação
Este interruptor está obsoleto. Recomenda-se que o interruptor /Oicf seja usado em seu lugar.
-
Oif ou Oicf
-
Especifica o método proxy sem código de marshaling que inclui todas as funcionalidades fornecidas por /Oi e /Oic , mas usa um novo interpretador (strings de formato rápido) que oferece melhor desempenho do que /Oi ou /Oic. Esta mudança inclui melhorias recentes em RPC e é recomendada para cenários modernos de RPC.
Observações
Por favor, note as restrições relacionadas com as plataformas de apoio.
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 da versão MIDL 6.0.359, o compilador MIDL gera stubs /Oicf/robust por defeito. Algumas funcionalidades de linguagem não são suportadas em certos modos. Neste caso, o compilador muda 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. Neste modo, o compilador escolhe organizar alguns parâmetros em linha nos stubs gerados. Embora isto resulte num tamanho maior do stub, oferece um desempenho aumentado.
O método totalmente interpretado faz o marshing dos dados completamente offline. Isto reduz consideravelmente o tamanho do código stub, mas resulta numa diminuição do desempenho. Além disso, com o método totalmente interpretado, existe um limite de 16 parâmetros para cada procedimento. Qualquer procedimento contendo mais de 16 parâmetros será automaticamente processado no modo /Os . Entre os modos interpretados, /Oicf oferece o melhor desempenho e /Oi oferece a melhor compatibilidade retroativa.
Pode querer usar a opção /OIF se a sua aplicação usar funcionalidades MIDL introduzidas com o MIDL 3.0, como os atributos [wire_marshal] e [user_marshal]. Se a sua aplicação usar pipes , deve usar a opção /Oif ; se especificar outro modo, o compilador MIDL mudará para /Oif.
Para afinar a forma como o seu código stub é marshaleado, Microsoft RPC fornece um atributo ACF [optimize]. Este atributo é usado como 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 Convocação
Os stubs gerados pelo compilador MIDL no método interpretado usando os switches /Oi, /Oic ou /Oif devem ser compilados como um procedimento stdcall ou cdecl durante a compilação C. Uma convenção de chamadas PASCAL ou Fastcall não funciona. 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
Consulte também