Bagikan melalui


C28167

peringatan C28167: Fungsi mengubah IRQL dan tidak memulihkan IRQL sebelum keluar. Ini harus dianomasikan untuk mencerminkan perubahan atau IRQL harus dipulihkan.

Peringatan ini menunjukkan bahwa kondisi berikut ini benar:

  • Fungsi ini mengubah IRQL tempat driver berjalan.

  • Setidaknya ada satu jalur melalui fungsi yang tidak, dengan keluarnya fungsi, memulihkan IRQL ke IRQL asli yang dijalankan driver pada entri fungsi.

Peringatan ini terjadi ketika anotasi IRQL pada fungsi diperlukan, tetapi tidak ada.

Untuk menghindari peringatan ini, driver harus menyimpan nilai IRQL awal dengan benar dan memulihkan nilai IRQL yang sama saat fungsi keluar jika tidak berniat untuk mengubah IRQL.

Fungsi yang sengaja mengubah IRQL menjadi nilai yang berbeda dari IRQL tempat driver berjalan pada entri fungsi harus dianotasikan untuk menunjukkan perilaku ini. Misalnya, Anda dapat menggunakan anotasi _IRQL_raises_(irql) untuk menunjukkan bahwa fungsi mengubah IRQL dari IRQL tempat fungsi dipanggil. Anda juga dapat menyimpan dan memulihkan nilai IRQL dan menerapkan anotasi yang sesuai (_IRQL_saves_, _IRQL_restores_). Anotasi akan menekan peringatan ini. Untuk informasi selengkapnya, lihat anotasi IRQL untuk driver. Fungsi yang mengubah IRQL secara tidak sengaja harus diperbaiki.