Comutador /robust
A opção /robust informa ao compilador MIDL para gerar informações adicionais de verificação de erros, que o mecanismo NDR usa para executar verificações de integridade em tempo de execução.
midl /robust {/Oicf | /Oif }
-
/Oicf
-
/Oif
-
Essas opções são idênticas em suas funcionalidades. Eles especificam o método de proxy sem código de marshaling e usam cadeias de caracteres de formato rápido para melhorar o desempenho. Consulte / Oi.
O uso do comutador /robust gera informações adicionais que permitem que o mecanismo de NDR (Representação de Dados de Rede) execute a verificação de erros em tempo de execução em argumentos correlacionados em matrizes dinâmicas, uniões e ponteiros de interface de saída em aplicativos DCOM. A opção /robust só está disponível no Windows 2000 e versões posteriores do Windows.
Um argumento correlacionado é um argumento que usa qualquer um dos atributos que permitem que o tamanho de um objeto de dados seja determinado em tempo de execução: size_is, length_is, first_is, last_is, max_is, switch_is e iid_is. De acordo com a especificação OSF-DCE para a representação de transmissão, esse argumento correlacionado aparece em dois locais diferentes. Por exemplo, considere um uso típico do atributo size_is :
HRESULT Func1([in] long Size,
[in, size_is(Size)]BAR_TYPE *pBarType);
Neste exemplo, o cliente passa um long que especifica o tamanho de um bloco de BAR_TYPEs (em termos de número de elementos BAR_TYPES) e um ponteiro para o bloco real de BAR_TYPEs. O argumento Size correlaciona-se com o argumento pBarType. De acordo com a especificação OSF-DCE, o argumento Size é representado duas vezes na transmissão— primeiro como ele mesmo e, em seguida, com a matriz de elementos BAR_TYPE que representam o argumento pBarType. Cada argumento é unmarshaled independentemente, de acordo com sua própria representação de transmissão. Normalmente, o argumento Size e sua cópia, que é usada para representar parte do outro argumento, têm os mesmos valores. No entanto, se o argumento Size ficar corrompido (por exemplo, quando o bloco de BAR_TYPES for maior do que o que foi alocado), o aplicativo do servidor poderá parar de responder, pois ele usa o valor do argumento Size para medir os dados de entrada.
A opção /robust é necessária para implementar a verificação de intervalo válida com o atributo range .
midl /robust /Oicf filename.idl