Mengirimkan Pelacakan IRQL
Untuk meningkatkan performa sistem, beberapa fungsi NDIS (misalnya, fungsi MiniportSendNetBufferLists ) menyertakan bendera tingkat pengiriman yang menunjukkan IRQL saat ini. Penggunaan bendera tingkat pengiriman yang tepat dapat membantu menghindari upaya yang tidak perlu untuk mengatur IRQL.
Ada bendera lain yang mengontrol atribut lain, tetapi nama untuk bendera tingkat pengiriman adalah:
NDIS_SEND_FLAGS_DISPATCH_LEVEL
NDIS_SEND_COMPLETE_FLAGS_DISPATCH_LEVEL
NDIS_RECEIVE_FLAGS_DISPATCH_LEVEL
NDIS_RETURN_FLAGS_DISPATCH_LEVEL
NDIS_RWL_AT_DISPATCH_LEVEL
Pemanggil harus menentukan pengaturan bendera tingkat pengiriman dari IRQL saat ini yang diketahui, bukan dengan menguji IRQL. Misalnya, Anda mengetahui IRQL karena merupakan karakteristik tetap dari desain driver, atau driver menyimpan IRQL saat ini.
Jika IRQL yang diketahui saat ini DISPATCH_LEVEL, pemanggil harus mengatur bendera ini. Jika IRQL saat ini tidak diketahui, atau pemanggil tidak berjalan pada DISPATCH_LEVEL, pemanggil harus menghapus bendera ini. Jika pemanggil adalah NDIS, fungsi yang disebut harus menguji bendera ini untuk menghindari perubahan IRQL.
Driver tidak boleh menguji IRQL untuk menentukan nilai untuk bendera tingkat pengiriman. Pengujian akan mengalahkan tujuan bendera. Jika perlu, fungsi yang dipanggil hanya dapat melakukan pengujian itu sendiri. Bagaimana driver menentukan bahwa itu harus atau tidak boleh mengatur bendera dibiarkan ke desain driver tertentu.