内核驱动核心概念:IRP、IRQL 与设备堆栈
IRP(I/O Request Packet,I/O 请求包)是 Windows 内核 I/O 系统的基础单元。用户态调用 ReadFile、WriteFile、DeviceIoControl 时,I/O 管理器会生成 IRP,沿着设备堆栈逐层下发给驱动。每个驱动可以选择处理 IRP,或者向下转发给下层驱动,处理完成后调用完成函数,把结果回传给上层。过滤驱动就是挂载在设备堆栈上,拦截、修改 IRP,常见于文件过滤、网络过滤。IRQL(中断请求级别)是内核并发控制机制。CPU 运行在不同 IRQL 层级,高 IRQL 代码可以抢占低 IRQL 代码。常见层级:PASSIVE_LEVEL(普通线程,可分页内存)、DISPATCH_LEVEL(调度级别,不能使用分页内存,不能调用会阻塞的函数)。开发中最容易踩坑:在 DISPATCH_LEVEL 调用分页内存 API,直接蓝屏。
设备堆栈:一个硬件设备会绑定多个驱动,形成从上到下的堆栈。上层过滤驱动、功能驱动、底层总线驱动依次排列。PnP 管理器负责构建、销毁设备堆栈,驱动必须正确响应 PnP 事件,否则设备无法正常加载。
楼主,不论什么情况你一定要hold住!hold住就是胜利! 果断回帖,如果沉了就是我弄沉的很有成就感
页:
[1]