2014-09-26 26 views
1

我是新寫Windows設備驅動程序。爲什麼Windows設備驅動程序中斷服務程序(ISR)是可中斷的?

我的理解是,在x86處理器被中斷(當CPU的INTR線由器件觸發時)的硬件級,處理器清除EFLAGS寄存器的中斷標誌位以禁用中斷,然後執行中斷服務程序(ISR)。所以通常情況下,x86 ISR在完成其工作併發出IRET指令之前不能再次中斷。但爲什麼Windows ISR是可中斷的? Windows ISR與處理器的ISR相同嗎?

Windows設備驅動程序ISR根據這裏是中斷: MSDN:Writing an ISR

+0

處理器標誌由DIRQL虛擬化,主要是爲了確保設備驅動程序不能濫用它並讓中斷在長時間內處於禁用狀態。 – 2014-09-26 10:15:11

回答

0

什麼或你在鏈接中指定的文件說的是: 1.當中斷[DIRQL]提高總的原則是所有的中斷用於該設備並且小於該設備的IRQL。 2.當一個ISR正在執行,並且一個具有較高DIRQL中斷的設備時,那麼具有較高DIRQL的設備的ISR將被稱爲...

因此,鏈接中指定的語句指向上述點。