C28715
警告 C28715: 意味的に異なる整数型間でキャストする
この警告は、ブール値が NTSTATUS にキャストされていることを示します。 これは望ましくない結果を与える可能性があります。 たとえば、ブール値 (FALSE) を返す関数の一般的なエラー値は、NTSTATUS としてテストされた場合の成功状態です。
通常、ブール値を返す関数は、1 (TRUE の場合) または 0 (FALSE の場合) を返します。 これらの値はどちらも、NT_SUCCESS マクロによって成功コードとして扱われます。 したがって、エラー ケースは検出されません。
例
PREfast は、次の例の警告を報告します。
extern BOOL SomeFunction(void);
if (NT_SUCCESS(SomeFunction())) {
return 0;
} else {
return -1;
}
次の例では、エラーが回避されます。
extern BOOL SomeFunction(void);
if (SomeFunction() == TRUE) {
return 0;
} else {
return -1;
}