Compartilhar via


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);