Partilhar via


C28715

aviso C28715: conversão entre tipos inteiros semanticamente diferentes

Esse aviso indica que um booliano está sendo convertido em NTSTATUS. É provável que isso forneça resultados indesejáveis. Por exemplo, o valor de falha típico para funções que retornam um booliano (FALSE) é um sucesso status quando testado como um NTSTATUS.

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

Exemplos

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