C28715
Warnung C28715: Umwandlung zwischen semantisch unterschiedlichen Ganzzahltypen
Diese Warnung gibt an, dass ein Boolescher Wert in NTSTATUS umgewandelt wird. Dies wird wahrscheinlich zu unerwünschten Ergebnissen führen. Beispielsweise ist der typische Fehlerwert für Funktionen, die einen booleschen Wert (FALSE) zurückgeben, ein Erfolg status, wenn er als NTSTATUS getestet wird.
In der Regel gibt eine Funktion, die boolean zurückgibt, entweder 1 (für TRUE) oder 0 (für FALSE) zurück. Beide Werte werden vom makro NT_SUCCESS als Erfolgscodes behandelt. Daher wird der Fehlerfall nie erkannt.
Beispiele
PREfast meldet die Warnung für das folgende Beispiel.
extern BOOL SomeFunction(void);
if (NT_SUCCESS(SomeFunction())) {
return 0;
} else {
return -1;
}
Im folgenden Beispiel wird der Fehler vermieden.
extern BOOL SomeFunction(void);
if (SomeFunction() == TRUE) {
return 0;
} else {
return -1;
}