C28716
avertissement C28716 : conversion insérée dans le compilateur entre des types intégraux sémantiquement différents
Cet avertissement indique qu’une valeur booléenne est utilisée en tant que NTSTATUS sans être explicitement castée. Cela est susceptible de donner des résultats indésirables. Par instance, la valeur d’échec classique pour les fonctions qui retournent une valeur booléenne (false) indique une réussite status lorsqu’elle est testée en tant que NTSTATUS.
Exemple
PREfast signale l’avertissement pour l’exemple suivant.
extern bool SomeMemAllocFunction(void **);
return SomeMemAllocFunction(&MyPtr);
L’exemple suivant évite l’erreur.
extern bool SomeMemAllocFunction(void **);
if (SomeMemAllocFunction(&MyPtr) == true) {
return STATUS_SUCCESS;
} else {
return STATUS_NO_MEMORY;
}