如果你已经写过几个最基础的 WDM 驱动,能让它加载、创建设备对象、处理一下 IRP,接下来大概率会撞到同一堵墙:设备热插拔时驱动崩了,或者两个驱动抢同一个设备,再或者面对一块 PCI 卡不知道该从哪里下手。这门《Windows驱动编程基础(下)》处理的正是这些"上半场没讲、但实际开发绕不开"的问题。
它接的是哪一段
课程默认你已经具备 C/C++ 功底,熟悉 Windows 系统编程,也写过最简单的驱动。它不重复讲驱动入口、IRP 基础分发这些内容,而是直接从分层驱动模型切入。也就是说,这是一门"补中间层"的课——基础部分你如果还含糊,先别急着上,否则讲过滤驱动时你会听得很吃力。
真正需要它的人大致两类:一类是做安全、监控、加密类产品,必须往别人的驱动栈里插一层;另一类是做硬件配套驱动,需要理解系统怎么枚举设备、怎么分配资源、怎么响应电源状态变化。这两类工作,光靠入门知识是做不出来的。
学完之后能独立做什么
这是判断值不值得学最实际的标准。按课程覆盖的范围,学完你应当能独立完成几件事:写一个过滤驱动并正确挂到目标设备栈上,处理它该处理的 IRP 并把其余请求往下传;为自己的设备实现 PNP 例程,让设备能正常被插拔、被系统识别;理解 PCI 总线的配置空间和资源分配流程,能读懂一块板卡在系统里的资源映射。这些都不是纸上概念,是能被验证的成品。
需要提醒的是,课程主题是"原理及实现",重心在内核机制的来龙去脉,而不是某个具体产品的完整开发流程。如果你指望学完就能直接交付一个商业级驱动,中间还需要自己补大量调试和稳定性经验。但作为从"会写 demo"到"能理解系统怎么组织驱动"的过渡,它的定位是清楚的。
几个重点模块的实际价值
- 分层与过滤驱动:这是整门课最值得花时间的部分。过滤驱动的难点不在写代码,而在想清楚该拦哪些请求、哪些必须原样下传、以及卸载时怎么保证不残留。课程在这块的讲解直接决定你日后能不能安全地"寄生"在别人的驱动栈上。
- PNP 管理:热插拔、意外移除、资源重平衡都归它管。很多人写的驱动在实验室好好的,一到真实机器上插拔几次就蓝屏,问题基本都出在这一层。
- 电源管理:容易被忽略但躲不掉。系统休眠、待机、设备省电,驱动都要配合响应。这部分讲清楚了,你的驱动才不会在笔记本合盖时出状况。
- PCI 总线驱动原理:偏底层,面向做硬件驱动的人。不碰板卡的话可以快速过一遍,理解设备是怎么被枚举和分配资源的即可。
资料适合什么基础的人用
资料本身是课程配套性质,适合边看边在虚拟机上动手验证。你需要一套能调试内核的环境——WinDbg 加虚拟机双机调试基本是刚需,没有这个条件,学起来会非常痛苦,因为驱动的问题几乎都靠调试器定位。
如果你目前只会写应用层代码,建议先把 WDM 的基础模型和 IRP 机制补上再来。这门课不会回头照顾零基础,它的价值在于把内核里几个相互关联的子系统串成一条线,让你明白设备从插入到工作、从休眠到移除,系统在背后做了什么。带着具体问题来学,收获会比按顺序刷完大得多。
课程目录
课程目录33 集
- 01 DeviceIoControl和一个完成的NT驱动 01 从DeviceIoControl说起.mp4
- 02 控制码通信.mp4
- 03 内存的使用.mp4
- 04 端口的读写和PC喇叭的驱动.mp4
- 05 在内核执行应用层代码.mp4
- 02 分层驱动 01 分层驱动与键盘过滤.mp4
- 02 IoMarkIrpPending.mp4
- 03 列举设备栈.mp4
- 04 系统调用.mp4
- 05 查找SSDT以及系统调用.mp4
- 06 第二种查找SSDT的方法.mp4
- 07 更强的WriteProcessMemory.mp4
- 03 PCI 01 PCI配置空间背景.mp4
- 02 PCI配置地址空间.mp4
- 03 列举PCI设备.mp4
- 04 Pnp 01 即插即用概述.mp4
- 02 设备接口.mp4
- 03 驱动安装过程详解一.mp4
- 04 驱动安装过程详解二.mp4
- 05 Filter_Resource.mp4
- 06 Start_device.mp4
- 07 资源使用.mp4
- 08 获得物理设备对象和总线信息.mp4
- 09 确保驱动不被卸载.mp4
- 05 电源管理 01 电源管理.mp4
- 02 电源状态的上升和下降.mp4
- 03 电源管理优化.mp4
- 06 过滤驱动 01 过滤驱动框架.mp4
- 02 过滤驱动的概念和安装.mp4
- 07 多功能设备驱动-类似总线驱动 01 IRP处理总结.mp4
- 02 物理设备对象的创建.mp4
- 03 总线设备安装结果略看.mp4
- 04 总线驱动处理PDO的IRP.mp4






