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