C28715
avertissement C28715 : Cast entre des types entiers sémantiquement différents
Cet avertissement indique qu’un booléen est en cours de conversion en NTSTATUS. Cela est susceptible de donner des résultats indésirables. Par exemple, la valeur d’échec classique pour les fonctions qui retournent une valeur booléenne (FALSE) est une réussite status en cas de test en tant que NTSTATUS.
En règle générale, une fonction qui retourne booléen retourne 1 (pour TRUE) ou 0 (pour FALSE). Ces deux valeurs sont traitées comme des codes de réussite par la macro NT_SUCCESS . Par conséquent, le cas d’échec ne sera jamais détecté.
Exemples
PREfast signale l’avertissement pour l’exemple suivant.
extern BOOL SomeFunction(void);
if (NT_SUCCESS(SomeFunction())) {
return 0;
} else {
return -1;
}
L’exemple suivant évite l’erreur.
extern BOOL SomeFunction(void);
if (SomeFunction() == TRUE) {
return 0;
} else {
return -1;
}