C28715

警告 C28715:在语义上不同的整数类型之间强制转换

此警告指示正在将布尔值转换为 NTSTATUS。 这可能会产生不良结果。 例如,返回布尔 (FALSE) 函数的典型失败值是作为 NTSTATUS 进行测试时的成功状态。

通常,返回布尔值的函数对于 TRUE) 返回 1 (,对于 FALSE) 返回 0 (。 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;
}