C28715
avviso C28715: Cast tra tipi integer semanticamente diversi
Questo avviso indica che viene eseguito il cast di un valore Boolean in NTSTATUS. È probabile che ciò restituisca risultati indesiderati. Ad esempio, il valore di errore tipico per le funzioni che restituiscono un valore booleano (FALSE) è uno stato di esito positivo quando viene testato come NTSTATUS.
In genere, una funzione che restituisce Boolean restituisce 1 (per TRUE) o 0 (per FALSE). Entrambi questi valori vengono considerati come codici di esito positivo dalla macro NT_SUCCESS . Pertanto, il caso di errore non verrà mai rilevato.
Esempi:
PREfast segnala l'avviso per l'esempio seguente.
extern BOOL SomeFunction(void);
if (NT_SUCCESS(SomeFunction())) {
return 0;
} else {
return -1;
}
Nell'esempio seguente viene evitato l'errore .
extern BOOL SomeFunction(void);
if (SomeFunction() == TRUE) {
return 0;
} else {
return -1;
}