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.
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