複製鏈接
請複製以下鏈接發送給好友

IRQL

鎖定
IRQL是Interrupt ReQuest Level,中斷請求級別。一個由windows虛擬出來的概念,劃分在windows下中斷的優先級,這裏中斷包括了硬中斷和軟中斷,硬中斷是由硬件產生,而軟中斷則是完全虛擬出來的。
中文名
中斷請求級別
外文名
Interrupt ReQuest Level
縮    寫
IRQL
來    源
由windows虛擬出來的概念
IRQL是Interrupt ReQuest Level,中斷請求級別。一個由windows虛擬出來的概念,劃分在windows下中斷的優先級,這裏中斷包括了硬中斷和軟中斷,硬中斷是由硬件產生,而軟中斷則是完全虛擬出來的。
處理器在一個IRQL上執行線程代碼。IRQL是幫助決定線程如何被中斷的。在同一處理器上,線程只能被更高級別IRQL的線程能中斷。每個處理器都有自己的中斷IRQL。
我們在調用NDIS API時,在DDK幫助文檔中都有該API函數的所在級別。
PASSIVE_LEVEL
IRQL最低級別,沒有被屏蔽的中斷,在這個級別上,線程執行用户模式,可以訪問分頁內存。
APC_LEVEL
在這個級別上,只有APC級別的中斷被屏蔽,可以訪問分頁內存。當有APC發生時,處理器提升到APC級別,這樣,就屏蔽掉其它APC,為了和APC執行一些同步,驅動程序可以手動提升到這個級別。比如,如果提升到這個級別,APC就不能調用。在這個級別,APC被禁止了,導致禁止一些I/O完成APC,所以有一些API不能調用。
DISPATCH_LEVEL
這個級別,DPC 和更低的中斷被屏蔽,不能訪問分頁內存,所有的被訪問的內存不能分頁。因為只能處理非分頁內存,所以在這個級別,能夠訪問的Api大大減少。
DIRQL (Device IRQL)
一般的,更高級的驅動在這個級別上不處理IRQL,但是幾乎所有的中斷被屏蔽,這實際上是IRQL的一個範圍,這是一個決定某個驅動有更高的優先級的方法。