C28716

警告 C28716:在语义上不同的整型类型之间插入编译器的强制转换

此警告指示布尔值用作 NTSTATUS 而不进行显式强制转换。 这可能会产生不良结果。 例如,返回布尔值 (false) 函数的典型失败值指示作为 NTSTATUS 进行测试时的成功状态。

示例

PREfast 报告以下示例的警告。

extern bool SomeMemAllocFunction(void **);

return SomeMemAllocFunction(&MyPtr);

以下示例避免了此错误。

extern bool SomeMemAllocFunction(void **);

if (SomeMemAllocFunction(&MyPtr) == true) {
 return STATUS_SUCCESS;
} else {
 return STATUS_NO_MEMORY;
}