Partilhar via


/interruptor de erro

O interruptor /error determina os tipos de verificação de erros que os stubs gerados irão executar em tempo de execução.

Observação

Esta funcionalidade está obsoleta e já não é suportada. Recomenda-se o uso do interruptor /robust .

 

midl /error { allocation | stub_data | ref | bounds_check | none | all }

Opções de Troca

Alocação

Verifica se midl_user_allocate devolve um valor NULL , indicando um erro de falta de memória.

stub_data

Gera um stub que apanha exceções de desmarshaling do lado do servidor e as propaga de volta ao cliente.

Árbitro

Gera código que executa uma verificação em tempo de execução para garantir que nenhum ponteiro de referência NULL está a ser passado para os stubs do cliente e levanta uma exceção de RPC_X_NULL_REF_POINTER se encontrar alguma.

bounds_check

Verifica o tamanho dos arrays que variam conforme e variam em relação à especificação do comprimento da transmissão.

nenhum

Não faz verificação de erros.

todos

Realiza toda a verificação de erros. A partir da versão 5.0 do MIDL, este é um comutador de compilador padrão.

Observações

O interruptor /error seleciona o número de verificações de erro que os ficheiros stub gerados irão realizar. A partir da versão 5.0 do MIDL, a definição padrão é /error all.

Os erros de enum que são verificados (por defeito em todas as versões do MIDL) são erros de truncamento causados ao converter entre tipos de enum longo (inteiros de 32 bits) e tipos de enum curto (a representação de dados de rede do enum), e o número de identificadores numa enumeração superior a 32.767.

A verificação de erros no acesso à memória (também por defeito em todas as versões do MIDL) é para apontadores que excedem o fim do buffer no código de marshaling e para arrays conformes cujo tamanho é inferior a zero. Use o flag de bounds_check /error para verificar se há outros limites de array inválidos.

Quando especificas a alocação /error, os stubs incluem código que levanta uma exceção quando midl_user_allocate devolve 0.

A opção de stub_data /error impede que os dados do cliente colapsem o servidor durante o desmarshaling, proporcionando efetivamente um método mais robusto para lidar com a operação de desmarshaling.

A partir do Windows 2000, o motor de marshaling NDR em tempo de execução subjacente realiza a maioria destas verificações. Isto significa que, se estiver a usar um dos modos totalmente interpretados (/Oi, /Oif) de geração de stubs, escolher diferentes opções de verificação de erros não terá um efeito significativo no desempenho.

Exemplos

midl /error allocation filename.idl

midl /error none filename.idl

Consulte também

Sintaxe geral de linha de comandos MIDL

/robusto