Bagikan melalui


C28110

peringatan C28110: Driver harus melindungi status perangkat keras floating-point. Lihat penggunaan float

Informasi Tambahan

Gunakan KeSaveFloatingPointState dan KeRestoreFloatingPointState di sekitar operasi floating-point. Driver tampilan harus menggunakan rutinitas Eng... yang sesuai.

Peringatan ini hanya berlaku dalam mode kernel. Driver mencoba menggunakan variabel atau konstanta jenis float ketika kode tidak dilindungi oleh KeSaveFloatingPointState dan KeRestoreFloatingPointState, atau EngSaveFloatingPointState dan EngRestoreFloatingPointState.

Biasanya, driver berjalan dengan konteks floating-point dari aplikasi terbaru, dan setiap penggunaan floating point yang tidak dilindungi oleh KeSaveFloatingPointState dan KeRestoreFloatingPointState dapat mengubah hasil untuk proses lain dan sering kali dapat menyebabkan hasil yang salah atau tidak terduga pada driver.

Driver tampilan harus menggunakan EngSaveFloatingPointState dan EngRestoreFloatingPointState.

Setelah instans kesalahan ini terdeteksi di sepanjang jalur alur tertentu, alat Analisis Kode menekan kesalahan serupa berikutnya. Alat Analisis Kode tidak melaporkan kesalahan ini untuk definisi fungsi yang mengambil argumen jenis mengambang atau yang mengembalikan jenis mengambang, karena pemanggil akan melaporkan penggunaan.

Peringatan ini dapat dipicu dalam kesalahan ketika program menyimpan dan memulihkan status floating-point di sekitar panggilan fungsi, dan fungsi yang disebut melakukan operasi floating-point.

Jika fungsi menggunakan operasi floating-point dengan sengaja, dan mengharapkan untuk dipanggil dalam konteks di mana floating point aman, Anda harus membuat anotasi fungsi dengan _Kernel_float_used_. Anotasi ini akan menekan peringatan dalam isi fungsi dan menyebabkan konteks panggilan memeriksa bahwa panggilan dilindungi dengan aman untuk operasi floating-point. Jika operasi floating-point muncul dalam argumen atau mengembalikan nilai, efeknya sama dengan menggunakan _Kernel_float_used_.

Dengan menggunakan _Kernel_float_used_ pada (atau menambahkan panggilan simpan dan pulihkan yang sesuai ke) semua fungsi yang menggunakan floating point sampai tidak ada peringatan yang tersisa, driver dapat diyadarkan untuk bebas dari penyalahgunaan perangkat keras floating-point. Untuk informasi selengkapnya, lihat Anotasi titik mengambang untuk driver.