Bagikan melalui


C28715

peringatan C28715: Transmisikan antara jenis bilangan bulat yang berbeda secara semantik

Peringatan ini menunjukkan bahwa Boolean sedang dilemparkan ke NTSTATUS. Ini kemungkinan akan memberikan hasil yang tidak diinginkan. Misalnya, nilai kegagalan umum untuk fungsi yang mengembalikan Boolean (FALSE) adalah status keberhasilan saat diuji sebagai NTSTATUS.

Biasanya, fungsi yang mengembalikan Boolean mengembalikan 1 (untuk TRUE) atau 0 (untuk FALSE). Kedua nilai ini diperlakukan sebagai kode keberhasilan oleh makro NT_SUCCESS. Dengan demikian, kasus kegagalan tidak akan pernah terdeteksi.

Contoh

PREfast melaporkan peringatan untuk contoh berikut.

extern BOOL SomeFunction(void);

if (NT_SUCCESS(SomeFunction())) {
   return 0;
} else {
   return -1;
}

Contoh berikut menghindari kesalahan.

extern BOOL SomeFunction(void);

if (SomeFunction() == TRUE) {
   return 0;
} else {
   return -1;
}