C28139
aviso C28139: o argumento deve corresponder exatamente ao tipo
Informações adicionais |
Algumas funções permitem aritmética limitada no tipo de argumento, outras não. Isso geralmente indica que uma enumeração formal não foi passada a um membro da enumeração, mas também pode ser usada para outros tipos. |
Um valor enumerado em uma chamada de função não corresponde ao tipo especificado para o parâmetro na declaração de função. Esse erro pode ocorrer quando os parâmetros são codificados incorretamente, ausentes ou fora de ordem. Como C permite que valores enumerados sejam usados de forma intercambiável e sejam usados de forma intercambiável com constantes inteiros, não é incomum passar o valor enumerado errado para uma função sem reconhecer o erro.
Se a ferramenta Análise de Código relatar esse erro, consulte a documentação da função no WDK. Algumas funções são codificadas para permitir apenas valores enumerados. Outros permitem que o operador ?: selecione entre valores desse tipo ou permita aritmética em membros do tipo enumerado, como quando sinalizadores de bit são codificados como um valor enumerado. Em alguns casos, valores enumerados e constantes podem ser combinados.
Exemplo
O exemplo de código a seguir gera esse aviso.
....KeWaitForSingleObject(&MyMutex, UserRequest, UserRequest, false, NULL);
O exemplo de código a seguir evita esse aviso.
....KeWaitForSingleObject(&MyMutex, UserRequest, UserMode, false, NULL);