C28715
警告 C28715:在語意上不同的整數類型之間轉換
這個警告表示布爾值正在轉換成 NTSTATUS。 這可能會提供不想要的結果。 例如,當測試為NTSTATUS時,傳回布爾值 (FALSE) 函式的典型失敗值是成功狀態。
通常,傳回布爾值的函式會針對 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;
}