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