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;
}