1. 前言
最近一段时间一直在研究windows 驱动开发,简单聊聊。
为什么还要写?因为在学习的过程中,发现很多东西还是很相同的,如果你是从事linux 开发,可能会有些启发,如果是对windows 驱动开发有需求,可能提供一些不成熟的建议。
接下来开始正文,简单介绍下windows 驱动
在许多现代操作系统中,应用程序和操作系统是相互隔离的。操作系统的核心代码运行在特权模式下,即内核模式。而应用程序运行在非特权模式下,即用户模式。
操作系统和应用程序的关心类似于服务器和客户端的关系,这点在windows 平台下显得更加突出:
几个概念:
2.2 操作系统分层
windows 的设计思想是将内核设计的尽可能的小,并且采用“客户端-服务器”的结构。操作系统各个组件或者模块是通过消息进行通信的。
驱动程序:I/O 管理器接收应用程序后,创建相应的 IRP,并传送至驱动程序进行处理:
内核:内核被认为是 Windows 操作系统的心脏。Windows 的内核从执行组件分割出来。和执行组件相比,内核是非常小的:
硬件抽象层:不同的硬件平台,提供不同的硬件抽象层,并对上层提供统一的操作硬件的接口。
2.3 应用程序和驱动
3. windows 驱动框架
3.1 驱动模型:
windows 驱动大致分为这几类:
3.2 驱动演变
win7 x64 划时代操作系统,开始数字签名了
win10 :双认证签名,也就是说对驱动的安全性要求更高了。
3.3 驱动垂直层次结构
3.4 驱动水平层次结构
3.5 一个复杂的驱动结构
4. windows 开发环境搭建4.1 开发环境部署
以 win10 为例,列出需要安装的东西,详细过程限于篇幅以后更新
4.2 常用调试工具5. windows 驱动学习建议
有关Windows 驱动开发书籍,博文,教程甚少。如果有这方面需求的可以给以下几个建议:
推荐书籍: