Anotasi SAL 2.0 untuk driver Windows
Microsoft Source Code Annotation Language (SAL) menyertakan anotasi yang khusus untuk analisis driver Windows dan kode kernel terkait. Bahasa anotasi menyediakan cara menjelaskan properti fungsi, parameter, nilai pengembalian, struktur, dan bidang struktur. Anotasi seperti komentar yang Anda tambahkan ke kode Anda dan diabaikan oleh pengompilasi tetapi digunakan oleh alat analisis statis. Penggunaan anotasi membantu meningkatkan efektivitas pengembang, membantu meningkatkan akurasi hasil dari analisis statis, dan memungkinkan alat untuk menentukan dengan lebih baik apakah bug tertentu ada. Anotasi driver tidak dimaksudkan untuk digunakan dalam kode terkait non-driver atau non-kernel. Anotasi driver didefinisikan dalam Driverspecs.h.
Catatan Windows 8 memperkenalkan SAL 2.0, yang menggantikan SAL 1.0. Untuk informasi tentang SAL 2.0, lihat Menggunakan Anotasi SAL untuk Mengurangi Cacat Kode C/C++. SAL 2.0 menggantikan SAL 1.0. SAL 2.0 harus digunakan dengan Windows Driver Kit (WDK) 8 untuk Windows 8. Jika Anda memerlukan informasi tentang SAL 1.0 untuk driver, lihat dokumentasi yang dikirim dengan WDK untuk Windows 7.
Anotasi IRQL
Gunakan anotasi IRQL untuk menentukan rentang tingkat IRQL tempat fungsi harus berjalan. Anotasi IRQL membantu alat analisis kode untuk menemukan kesalahan dengan lebih akurat.
_IRQL_requires_max_(value)
_IRQL_requires_min_(value)
_IRQL_raises_(value)
_IRQL_requires_(value)
_IRQL_raises_(value)
_IRQL_saves_
_IRQL_restores_
_IRQL_saves_global_(kind, param)
_IRQL_restores_global_(kind, param)
_IRQL_always_function_min_(value)
_IRQL_always_function_max_(value)
_IRQL_requires_same_
_IRQL_is_cancel_
- Gunakan anotasi _IRQL_is_cancel untuk membantu memastikan perilaku fungsi panggilan balik DRIVER_CANCEL yang benar.
Anotasi titik mengambang untuk driver
_Kernel_float_saved_
_Kernel_float_restored_
_Kernel_float_used_
Gunakan anotasi Titik mengambang untuk driver untuk membantu alat analisis kode mendeteksi penggunaan titik pecahan dalam kode mode kernel dan untuk melaporkan kesalahan jika status floating-point tidak dilindungi dengan benar.
anotasi DO_DEVICE_INITIALIZING
_Kernel_clear_do_init_
Gunakan anotasi DO_DEVICE_INITIALIZING untuk menentukan apakah fungsi anotasi diharapkan untuk menghapus bit DO_DEVICE_INITIALIZING di bidang Bendera objek perangkat.
anotasi Kernel_IoGetDmaAdapter
_Kernel_IoGetDmaAdapter_
Gunakan anotasi Kernel_IoGetDmaAdapter untuk mengarahkan alat analisis kode untuk mencari penyalahgunaan pointer DMA.
Anotasi untuk operand yang saling mengunci
_Interlocked_operand_
Gunakan Anotasi untuk pengoperasi yang saling di-interlock untuk parameter fungsi untuk mengidentifikasinya sebagai operan yang saling dikundangkan. Sejumlah fungsi mengambil sebagai salah satu parameternya alamat variabel yang harus diakses dengan menggunakan instruksi prosesor yang saling diblokir. Ini adalah instruksi atom baca-baca cache, dan jika operan digunakan dengan tidak benar, hasil bug yang sangat halus.
Anotasi untuk rutinitas pengiriman driver
_Dispatch_type_
Gunakan Anotasi untuk Rutinitas Pengiriman Driver saat Anda mendeklarasikan rutinitas pengiriman driver WDM. Untuk informasi selengkapnya, lihat Mendeklarasikan Fungsi Menggunakan Jenis Peran Fungsi untuk Driver WDM dan Rutinitas Pengiriman Driver Anotasi.
Panggilan balik pra-operasi Sistem File Minifilter _Flt_CompletionContext_Outptr_ anotasi
_Flt_CompletionContext_Outptr_
Gunakan panggilan balik pra-operasi Minifilter Sistem File _Flt_CompletionContext_Outptr_ anotasi saat Anda mendeklarasikan fungsi panggilan balik pra-operasi minifilter sistem file PFLT_PRE_OPERATION_CALLBACK.
Tempatkan anotasi ini pada parameter CompletionContext. Anotasi ini mengarahkan alat analisis kode untuk memeriksa apakah CompletionContext sudah benar untuk nilai pengembalian FLT_PREOP_CALLBACK_STATUS.