浅谈Windows( 浅谈Windows驱动开发)
为什么还要写?因为在学习的过程中,发现很多东西还是很相同的,如果你是从事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 的设计思想是将内核设计的尽可能的小,并且采用“客户端-服务器”的结构。操作系统各个组件或者模块是通过消息进行通信的。
嵌入式物联网需要学的东西真的非常多,千万不要学错了路线和内容,导致工资要不上去!
无偿分享大家一个资料包,差不多150多G。里面学习内容、面经、项目都比较新也比较全!某鱼上买估计至少要好几十。
点击这里找小助理0元领取:加微信领取资料
win32 子系统:是最纯正的windows 系统,其他子系统都是通过win32 子系统的接口来实现的,一般很少用到。Natvie API :在win32 api 基础上加上Nt 前缀,基于版本兼容考虑系统服务:Native API 从用户模式进入内核模式,调用系统服务。(软中断方式实现,陷入内核)执行组件:内核模式下的一组服务函数。对象管理程序:windows 操作系统提供的服务几乎都是以对象的形式存在的,这里的对象类似于面向对象语言中对象的概论。如驱动对象,设备对象等管理。进程管理程序:负责创建和终止进程,线程调度是由内核负责的。进程管理程序依赖于其他执行组件。虚拟内存管理程序:在CPU的内存管理单元(MMU)的协助下,通过某种映射将物理内存和虚拟内存关联起来。I/O 管理器:负责发起I/O 请求,并管理请求。它由一系列内核模式下的例程所组成,这些例程为用户模式下的进程提供了统一接口。I/O 管理器的目标是使来自用户模式的I/O请求独立于设备。配置管理程序:配置管理程序,记录所有计算机软,硬件的配置信息。它使用一个被称为注册表的数据库保存这些数据。设备驱动程序根据注册表中的信息进行加载驱动程序:I/O 管理器接收应用程序后,创建相应的 IRP,并传送至驱动程序进行处理:根据IRP的请求,直接操作硬件,然后完成此IRP,并返回根据IRP的请求,转发到更底层的驱动中去,并等待底层驱动的返回。接受到IRP驱动后,不着急于完成。而是分配新的IRP法定其他驱动程序,并等待返回。内核:内核被认为是 Windows 操作系统的心脏。Windows 的内核从执行组件分割出来。和执行组件相比,内核是非常小的:对内核对象的支持。对线程的调度对多处理器同步支持。中断处理函数的支持。对异常陷阱的支持。对其他硬件特殊功能的支持。硬件抽象层:不同的硬件平台,提供不同的硬件抽象层,并对上层提供统一的操作硬件的接口。2.3 应用程序和驱动
3. windows 驱动框架3.1 驱动模型:
windows 驱动大致分为这几类:function driver:设备功能驱动filter driver:设备辅助驱动software driver:软件模块驱动bus driver:总线设备驱动3.2 驱动演变NT 模型 :2000以前,不支持 PNP (即插即用设备)WDM 模型:NT 基础上,支持 PNPWDF:WDM的重封装KMDF:内核模式(sys)UMDF:用户模式(dll)win7 x64 划时代操作系统,开始数字签名了win10 :双认证签名,也就是说对驱动的安全性要求更高了。3.3 驱动垂直层次结构设备的创建顺序,先创建底层PDO,在创建高层的FDO,即从底层设备到高层设备。在PDO 和 FDO之间可能有各种过滤驱动。每层设备对象由不同的驱动程序创建,或者说每层的设备对应着不同的驱动程序。底层设备对象寻找上一层的设备对象,是依靠底层设备对象的AttachedDevice 来寻找的。3.4 驱动水平层次结构同一驱动程序创建出来的设备对象的关系称之为水平层次关系。每一个设备通过NextDevice可以寻找水平层次的下一个设备对象。3.5 一个复杂的驱动结构
4. windows 开发环境搭建4.1 开发环境部署
以 win10 为例,列出需要安装的东西,详细过程限于篇幅以后更新安装VS2019安装 Windows SDK:VS 2019 顺带安装安装 WDK安装 VMware Win10 虚拟系统4.2 常用调试工具windbg:调试内核。WDK 自带,配合串口或者网络调试windows 内核DebugViewer:查看内核打印driverMonitor:驱动安装PCHunter_free:驱动强制卸载,不支持2004版本devicetree:设备枚举winobj:查看符号链接5. windows 驱动学习建议
有关Windows 驱动开发书籍,博文,教程甚少。如果有这方面需求的可以给以下几个建议:环境搭建:win7 32 vs2013 即可。不建议 win10 vs2019,比较新,遇到问题不好解决。其次早期的一些调试工具,win10 最新版本不一定支持。绕开数字签名:先使用测试模式,安装驱动。否则光安装部署就够折腾的。入门采用 WDM 驱动模型。市面上将WDM 的书籍和资料相对多些,相对来说,WDF 开发资料来不少。多看书,windows 驱动不想linux 资料一大把,遇到不懂得,加技术群,啃书本。
推荐书籍:《Windows 驱动开发技术详解》:已绝版《竹林蹊径:深入理解windows 驱动开发》:已绝版《windows 7:设备驱动程序开发 》:wdf 讲的比较多得书
原文链接:https://mp.weixin.qq.com/s/qGydT22PNfbvhxUT4pNmJw
转载自:嵌入式微处理器
原文链接:浅谈Windows驱动开发
相关阅读
- 急救225,急救人:争分夺秒护生命。[07-12]
- 旅店老板的女儿,算命瞎子揭开神秘面纱,旅店奇案背后的真相令人震惊!。[07-12]
- 魔兽世界7.2声望宝箱坐骑一览( 魔兽世界:巅峰箱子/大使箱子/突袭箱子奖励清单(当前版本9.2))[08-05]
- dnf称号宝珠,DNF:各部位技能宝珠提升率分析,称号性价比最高。[07-11]
- 幻兽帕鲁蜂蜜,《幻兽帕鲁》女皇蜂揭秘:位置与属性全解析!。[07-11]
- 彩虹岛灵宠,彩虹岛手游:手游攻略宠物篇。[07-12]
- 奥术符文,魔兽PLUS服法师符文大全。[07-12]
- 华为开发者大赛2024以“创想无限”为主题[06-22]
- 转载:华为开发者大会纯血鸿蒙应用启航[07-10]
- 华为获像素驱动与显示屏专利,旨在拓宽亮度显示新境界[07-05]
- 华为擎云C7二代上市:首款星闪商用平板,搭载自研鸿蒙OS,PC级办公体验[07-12]
- 术士绿火任务,《魔兽世界》德拉诺之王,查漏补缺:魔兽世界的踏雪拾遗。[07-12]
- 梦幻英雄大会,梦幻西游全新比武大会体验指南,准备好和你的好友一起玩转攻防吧。[07-12]
- 网游排行榜2013前十名( 拯救书荒,网游小说中的巅峰代表,这些你都看过吗?)[08-05]
- 巫蛊师哪里多,阴阳师雉刀翅膀面具在哪刷 鸦天狗哪里多?。[07-11]
- 雷电之王的勇士,五小的诞生!2015年的金州勇士是如何站上联盟之巅的?#勇士。[07-12]
- 魔兽世界7.0远古魔力有什么用( 魔兽世界-7.0破碎群岛上的坐骑)[08-05]
- 女巫的交易,「练级相关」「WLK」 WLK练级路上的牌子任务获取汇总(LM方)。[07-12]
- 剑与远征迷霭之森,剑与远征新奇境迷霭之森攻略,懒人版一图流教你轻松通关。[07-12]
- 天龙八部藏经阁,《天龙八部》中神秘的扫地僧练的是什么武功?答案就在他一席话中。[07-12]
热门资讯
-
2011年单机游戏排行榜,IGN评选“过去15年十佳RPG游戏名单”。
2024-12-22 13:01:55 -
魔兽世界惩戒骑士输出手法大全,「魔兽职业攻略」圣光出鞘,舞出一片天,惩戒骑全方位解析。
2024-12-22 12:59:39 -
dnf手游大枪pk连招教学,DNF女枪炮高端局PK攻略 要充分掌握保护机制。
2024-12-22 12:57:52 -
剑网3好看捏脸数据大全,你上你也行,顶级捏脸很简单?揭秘剑三中那些绝世美颜的制造过程。
2024-12-22 12:56:08 -
奥比岛手游怎么卖号,奥比岛手游钓鱼攻略大全。
2024-12-22 12:54:15 -
洛川群侠传下载,妙趣横生的武侠之作!《洛川群侠传》特色玩法介绍。
2024-12-22 12:52:41