Comutador /Oi

As opções /Oi e /Oic direcionam o compilador MIDL para usar um método de marshaling totalmente interpretado. O comutador /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 o comutador /Oicf seja usado em seu lugar.

 

Oic

Especifica o método 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 o comutador /Oicf seja usado em seu lugar.

 

Oif ou Oicf

Especifica o método de proxy sem código de marshaling 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.

Observações

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). Começando com MIDL versão 6.0.359, o compilador MIDL gera /Oicf/stubs robustos por padrão. Não há suporte para alguns recursos de linguagem 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 empacotar alguns parâmetros embutidos nos stubs gerados. Embora isso resulte em um tamanho maior de stub, ele oferece um desempenho maior.

O método totalmente interpretado faz marshaling de dados completamente offline. Isso reduz consideravelmente o tamanho do código stub, mas resulta em um 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 que foram 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, 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

Consulte também

/Robusto

/no_robust

Sintaxe geral da linha de comando MIDL

/Os

Otimizar

/no_format_opt