C28715

advertencia C28715: Conversión entre tipos enteros semánticamente diferentes

Esta advertencia indica que se va a convertir un valor booleano en NTSTATUS. Esto es probable que proporcione resultados no deseados. Por ejemplo, el valor de error típico de las funciones que devuelven un valor booleano (FALSE) es un estado correcto cuando se prueba como NTSTATUS.

Normalmente, una función que devuelve booleano devuelve 1 (para TRUE) o 0 (para FALSE). Ambos valores se tratan como códigos de operación correcta mediante la macro NT_SUCCESS . Por lo tanto, nunca se detectará el caso de error.

Ejemplos

PREfast notifica la advertencia para el ejemplo siguiente.

extern BOOL SomeFunction(void);

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

En el ejemplo siguiente se evita el error.

extern BOOL SomeFunction(void);

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