前沿拓展:
1. 前言
最近一段时间,我一直在研究 windows 驱动开发,下面跟大家简单聊聊:
对比 linux,windows 驱动无论是市面上的书籍,视频还是社区,博文以及号主,写的人很少,导致学习曲线直线上升;windows 驱动 从业 人员就更少了;开发环境部署麻烦;驱动安装发布麻烦,需要数字签名。如果是发布到windows update 库里面,还需要做微标认证。
为什么还要写?因为在学习的过程中,发现很多东西还是很相同的,如果你是从事linux 开发,可能会有些启发,如果是对windows 驱动开发有需求,可能提供一些不成熟的建议。
接下来进入正文,给大家简单介绍一下windows 驱动。
2. windows 体系架构2.1 **作系统与应用程序
在许多现代**作系统中,应用程序和**作系统是相互隔离的。**作系统的核心代码运行在特权模式下,即内核模式。而应用程序运行在非特权模式下,即用户模式。
**作系统和应用程序的关心类似于服务器和客户端的关系,这点在windows 平台下显得更加突出:
几个概念:
system 进程:windows **作系统本身会起一个 system 进程(加载kernel32.dll),有点类似于 linux 下的 init进程,具体细节不展开。FDO (Function Driver Object):设备功能驱动FiDO (Filter Driver Object):过滤驱动PDO (Physical Driver Object):物理设备驱动,真正访问硬件的地方。IRP (I/O Request Packet),应用程序 想要访问内核数据,必须通过IRP 传递。又叫IRP请求,当应用程序和驱动交互时,发送一个IRP 请求,IRP 会在各层设备驱动之间来回传动与转发。2.2 **作系统分层
windows 的设计思想是将内核设计的尽可能的小,并且采用“客户端-服务器”的结构。**作系统各个组件或者模块是通过消息进行通信的。
拓展知识:
原创文章,作者:九贤生活小编,如若转载,请注明出处:http://www.wangguangwei.com/104226.html