Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Windows设备驱动程序中断服务例程(ISR)是可中断的?_Windows_Device Driver_Isr - Fatal编程技术网

为什么Windows设备驱动程序中断服务例程(ISR)是可中断的?

为什么Windows设备驱动程序中断服务例程(ISR)是可中断的?,windows,device-driver,isr,Windows,Device Driver,Isr,我不熟悉编写Windows设备驱动程序 我的理解是,在硬件级别,当x86处理器被中断时(当设备触发CPU的INTR线时),处理器在执行中断服务例程(ISR)之前清除EFLAGS寄存器的中断标志位以禁用中断。因此,通常情况下,x86 ISR在完成工作并发出IRET指令之前不能再次中断。但为什么Windows ISR是可中断的?Windows ISR是否与处理器的ISR相同 Windows设备驱动程序ISR是可中断的,如下所示: 您在链接中指定的文档内容是: 1.当中断[DIRQL]被触发时,一般规

我不熟悉编写Windows设备驱动程序

我的理解是,在硬件级别,当x86处理器被中断时(当设备触发CPU的INTR线时),处理器在执行中断服务例程(ISR)之前清除EFLAGS寄存器的中断标志位以禁用中断。因此,通常情况下,x86 ISR在完成工作并发出IRET指令之前不能再次中断。但为什么Windows ISR是可中断的?Windows ISR是否与处理器的ISR相同

Windows设备驱动程序ISR是可中断的,如下所示:
您在链接中指定的文档内容是: 1.当中断[DIRQL]被触发时,一般规则是该设备的所有中断w.r.t,小于该设备IRQL。 2.当ISR正在执行且具有较高DIRQL的设备中断时,将调用具有较高DIRQL的设备的ISR


因此,链接中指定的语句指向我上面提到的点

处理器标志由DIRQL虚拟化,主要是为了确保设备驱动程序不能滥用它,并在较长时间内禁用中断。