麦洛克菲内核驱动开发第三课.pptVIP

  • 17
  • 0
  • 约1.26万字
  • 约 40页
  • 2016-12-26 发布于重庆
  • 举报
线程的运行级别(IRQL) 神马是中断?中断优先级 无中断: PASSIVE_LEVE(0) 软中断: APC_LEVEL (1) DISPATCH_LEVEL(2) 硬中断: DIRQL 设备中断请求级处理程序执行 PROFILE_LEVEL 配置文件定时器 CLOCK2_LEVEL 时钟 SYNCH_LEVEL 同步级 IPI_LEVE 处理器之间中断级 POWER_LEVEL 电源故障级 如何遵守中断级别要求? 明白驱动中各个函数的中断级别 明白要调用的API的运行级别 PASSIVE级别可以使用任何函数和内存 DISPATCH级别只能访问能运行在DISPATCH级别的API和非分页内存 NONPAGEPOOL内存可在任何级别使用 PAGEDPOOL只能在PASSIVE_LEVEL和APC_LEVEL使用 在PASSIVE和APC级别代码中加:PAGED_CODE()宏 #define PAGED_CODE() \ { if (KeGetCurrentIrql() APC_LEVEL) { \ KdPrint(( EX: Pageable code called at IRQL %d\n, KeGetCurrentIrql() )); \ ASSERT(FALSE); \ } \

文档评论(0)

1亿VIP精品文档

相关文档