/error switch
A opção /error determina os tipos de verificação de erro que os stubs gerados executarão em tempo de execução.
Observação
Esse recurso está obsoleto e não tem mais suporte. O uso do comutador /robust é recomendado.
midl /error { allocation | stub_data | ref | bounds_check | none | all }
Opções de opção
-
Alocação
-
Verifica se midl_user_allocate retorna um valor NULL , indicando um erro de memória insuficiente.
-
stub_data
-
Gera um stub que captura exceções de unmarshaling no lado do servidor e as propaga de volta para o cliente.
-
Ref
-
Gera um código que executa um marcar em tempo de execução para garantir que nenhum ponteiro de referência NULL esteja sendo passado para os stubs do cliente e gera uma exceção RPC_X_NULL_REF_POINTER se encontrar algum.
-
bounds_check
-
Verifica o tamanho de matrizes variáveis e variáveis em relação à especificação de comprimento de transmissão.
-
Nenhum
-
Não executa nenhuma verificação de erro.
-
Todos
-
Executa toda a verificação de erros. Efetivamente com MIDL versão 5.0, essa é uma opção de compilador padrão.
Comentários
A opção /error seleciona o número de verificações de erro que os arquivos stub gerados executarão. Em vigor com MIDL versão 5.0, a configuração padrão é /error all.
Os erros de enumeração que são verificados (por padrão em todas as versões de MIDL) são erros de truncamento causados ao converter entre tipos de enumeração longos (inteiros de 32 bits) e tipos de enumeração curtos (a representação de dados de rede de enumeração) e o número de identificadores em uma enumeração que excede 32.767.
A verificação de erros de acesso à memória (também por padrão em todas as versões do MIDL) é para ponteiros que excedem o final do buffer no código de marshaling e para matrizes compatíveis cujo tamanho é menor que zero. Use o sinalizador /error bounds_check para marcar para outros limites de matriz inválidos.
Quando você especifica /error allocation, os stubs incluem o código que gera uma exceção quando midl_user_allocate retorna 0.
A opção /error stub_data impede que os dados do cliente falhem no servidor durante a desmarcação, fornecendo efetivamente um método mais robusto para lidar com a operação de cancelamento demarsalação.
A partir do Windows 2000, o mecanismo de marshaling de NDR em tempo de execução subjacente executa a maioria dessas verificações. Isso significa que, se você estiver usando um dos modos totalmente interpretados (/Oi, /Oif) da geração de stub, escolher diferentes opções de verificação de erros não terá um efeito marcado no desempenho.
Exemplos
midl /error allocation filename.idl
midl /error none filename.idl
Confira também