Partilhar via


C28715

aviso C28715: Conversão entre tipos inteiros semanticamente diferentes

Esse aviso indica que um booleano está sendo convertido para NTSTATUS. É provável que esta situação dê resultados indesejáveis. Por exemplo, o valor de falha típico para funções que retornam um Boolean (FALSE) é um status de sucesso quando testado como um NTSTATUS.

Normalmente, uma função que retorna Boolean retorna 1 (para TRUE) ou 0 (para FALSE). Ambos os valores são tratados como códigos de sucesso pela macro NT_SUCCESS. Assim, o caso de falha nunca será detetado.

exemplos

O PREfast relata o aviso para o exemplo a seguir.

extern BOOL SomeFunction(void);

if (NT_SUCCESS(SomeFunction())) {
   return 0;
} else {
   return -1;
}

O exemplo a seguir evita o erro.

extern BOOL SomeFunction(void);

if (SomeFunction() == TRUE) {
   return 0;
} else {
   return -1;
}