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

/Robusto

/no_robust

Sintaxe geral da linha de comando MIDL

/Os

Otimizar

/no_format_opt