操作系统

当前位置:永利皇宫463登录 > 操作系统 > Windows的驱动开辟模型,Windows驱动wdf驱动开荒种类

Windows的驱动开辟模型,Windows驱动wdf驱动开荒种类

来源:http://www.makebuLuo.com 作者:永利皇宫463登录 时间:2019-09-20 04:14

   1.  前言

Windows的驱动开采模型

 

因工作上项指标内需,笔者必要做驱动相关的支付,从前并未接触过有关的文化,折腾一段时间下来,效用如需兑现了,也积存了有个别经历和见地,所以在此做番计算。

 

1. Framework Object Model

图片 1

对于驱动开荒的开垦引导,微软官方文书档案网址已经提供了很详细的学科文书档案,况兼在Github上提供了一多种标准的例程源码用于开辟人士参照他事他说加以考察。开采人士在有着一定的驱动概念知识后,通过参照他事他说加以考察官方例程能够很轻巧达成全部一定效能的驱动应用程序。

    在Windows的差异版本上支付的驱动程序“模型”(模型这些词语应该来自单词“Mode”。在Windows NT上,驱动程序被叫做Kernel Driver Mode驱动程序。作者认为这么些Mode是指一种驱动程序的布局和周转的行业内部),有过差别的名号。比方在Windows 9x上的驱动程序,都称为VXD,而在Windows NT上的驱动程序被称作KDM驱动程序,Windows 98~3000那几个时代出现的新模型叫做WDM。
    Windows的驱动模型概念,本来是就驱动程序的行为来讲的。譬如WDM驱动,绝对要满足提供n种被需求的特征(如电源管理、即插即用)才被称呼WDM驱动。若是不提供这么些功能,那么统一称为NT式驱动。一样的,WDF驱动也可能有它的一多种专门的学业。
    可是本书采取轻巧的不一样方法。将全数在Windows 3000~Windows Vista下能健康运转且未调用WDF相关的内核API函数的驱动都可以称作古板型驱动(包蕴NT式和WDM)。假诺调用了WDF相关的内核API则称为WDF驱动。
请留神:WDF驱动是能够调用古板型驱动所调用的内核API的,WDF能够说是古板型的进级版。
    模型的前进并非和操作系统版本的升官齐步走的,而是有多个日益取代的历程。比方Windows 98已经支撑部分的WDM驱动程序,但是又辅助部分的VXD驱动。而到了Windows 3000,则VXD这种驱动程序完全被淘汰了。KDM则是WDM的前身。WDM是在KDM的功底上平添了有的新的特色,制订了一部分新的行业内部而营造的。绝超越二分之一函数调用都以通用的。当然,Windows 9x体系的根本完全两样,所以VXD与之相比较,就一直不一个内核API函数是同等的。
    故而随着Windows 9x的打入冷宫,VXD难逃深透被淘汰的天数。Windows NT则发展成了后来的Windows版本,KDM也成为了WDM而存在下去。当然,微软不会闲着,今后又推出了新的WDF。读者又不得不忧虑:本书是用WDM写的依然用WDF写的呢?会不会刚刚学完又被淘汰呢?
    和VXD差异,从KDM到WDM再到WDF是一脉相传的,基本上KDM技术员在攻读WDM时早已占尽了福利。到WDF也不例外,WDF与其说是新的驱动开辟模型,还不及说是在已有的内核API和数据结构的根基上,又包装出一套让使用者认为更简约、更易用的以Wdf-开头的一组API。因而,读者完全没有要求顾忌WDF的腾飞会让眼下学习古板型驱动的大力半上落下。二个规范的例子是:差非常的少在一九九四年到1994年间发布第四个本子的硬盘上层过滤diskperf的代码,18年过去了,明天仍是可以够编写翻译并平时在风靡版本的Vista上运维。
    本书对于大多不能找到WDF实例的章节,都选拔了古板型驱动实行求证。比方磁盘过滤、文件系统过滤和网络中间层驱动。其余为了从轻松入手,对于入门级的四个例子(串口和键盘)也利用了传统型驱动。但是虚构磁盘和编造网卡(第5章和第11章),使用了WDF版本的例子,请读者注意鉴定区别。

2. KMDF程序结构

KMDF属于即插即用驱动程序的驱动模型:

1.一个DriverEntry例程。

2.一个EvtDriverDeviceAdd例程,类似于WDM的AddDevice例程。

3.一个或多少个IO队列。

4.贰个活多少个IO事件回调例程,类似于WDM的DispatchXxx。

5.协理的即插即用和电源管理回调例程。

6.支撑的WMI回调例程,用于管理计算机连串

7.其他回调例程,如指标的破除例程、中断管理例程、DMA例程。

 

Windows驱动程序入门:

Github:

 

   2.  驱动类型

 驱动分为如下两种档次:

  • 配备函数驱动程序
  • 设施筛选器驱动程序
  • 软件驱动程序
  • 文件系统筛选器驱动程序
  • 文件系统驱动程序

驱动程序不是必定必要与硬件通信,如若急需拜谒操作系统宗旨数据,往往应用程序没有丰富的权柄,这种地方则须求在基本形式下开展访问。就地点5种驱动类型,我仿效着微软的驱动例子开辟过 鼠标键盘设备过滤驱动网络过滤软件驱动程序,所以对驱动开辟的知晓仍在浅水区,如在阅读进程中发觉有误的地点,还请不吝建议。

运用的驱动类型涉及到代码的兑现(需没有须求驰念PNP和电源管理)和驱动的安装( NT式驱动程序以 service 的花样运行,别的驱动必要动用通用的INF文件安装),微软的官方文书档案这样提到:

style="font-family: 'Microsoft YaHei';">有关软件驱动程序,你的八个选择为 KMDF 和水源情势 Windows NT 驱动程序模型。 使用 KMDF 和根本方式 Windows NT 模型,你能够编写制定驱动程序,而不要求思虑即插即用 (PnP) 和电源管理。 你能够改为专一于驱动程序的主要任务上。 使用 KMDF,你不用思量 PnP 和电源,因为框架会为您管理 PnP 和电源。 使用基本形式 Windows NT 模型,你不用考虑 PnP 和电源,因为根本格局服务在与 PnP 和电源管理完全非亲非故的情状中运营。

   3.  开发环境

 

Visual Studio + WDK(Windows Driver Kit)

其间WDK必要协和手动下载安装

我是在Windows平台上支付,使用的支出条件为 Visual Studio 二〇一三 + WDK 8.1

 

   4.  实现方式

 

WDM vs WDF

对于刚先生接触驱动开辟的新手来讲,小编不提出使用WDM(Windows 驱动程序模型)进行开采。方今在英特网能找到的有关驱动开荒的华语图书基本上都以围绕WDM格局开展描述的,而至于WDF(Windows 驱动框架)开拓的图书非常少,《竹林溪径——深入浅出Window驱动开垦》和《Developing Drivers with the Windows Driver Foundation》算是两本呈报基于WDF开拓驱动的图书,两个都能在网络找到电子书能源。

 

依据WDF的驱动开荒

WDF的支付必要依据一定的平整,开采达成时索要怀想非常多的细节,由于篇幅有限,作者凭着自个儿的经历一时半刻稍做列举,后续将写一篇针对WDF驱动开荒的篇章。

  • PNP和电源管理(WDF已经帮忙封装了绝大许多的接口);
  • 种种对象:驱动对象,设备对象,WDF对象,文件对象,队列对象;
  • 使得上下文:一时称为设备扩张,用于存款和储蓄特定设备对象的连锁音讯的数据结构;
  • 指标的刑满释放解除劳教:须求牵挂分裂性质对象释放的空子;
  • 中断央求等级:管理不当易导致蓝屏;
  • 分页与非分页内部存款和储蓄器;
  • 同步锁:回调同步锁、框架等待锁、自旋锁、中断锁等;
  • 日志追踪记录: 调节和测试的必需,可以采纳 WPP(Windows软件追踪预管理器)或简捷的 DebugPrint 输出
  • 与应用程序的报纸发表:调整代码、IHavalQ,乞请队列

 

   5.  驱动安装

 

测验情况下安装驱动前

支出的驱动程序未有进展签订公约大概使用测量试验签字,则必要在设备上开启测量检验格局,具体操作为:展开调控台,输入:

bcdedit /set testsigning on

回车,会提示:操作成功完成。 然后重启设备,开机后会在计算机桌面右下方展现有“测量检验格局”字样内容的水印。

固然要关张测量试验方式,则需在支配台输入:

bcdedit /set testsigning off

回车,同样会提醒:操作成功完成。 重启设备后则会意识桌面右下角的水印消失。

 

以劳动的花样运维

NT式的驱动程序允许以 service 的情势运营, 服务安装的例程能够参照他事他说加以考察 WDF Sample 中的 Eventdrv 工程,只怕参考小编写的有关进度网络监控的驱动例程的开源代码

 

使用INF文件安装

设施相关的驱动装置能够选取INF举行安装,INF安装文件的编辑撰写建议从 WDF Sample 中找到确切的INF文件进行修改,就算你想打听INF的语法,能够参照这里

  • 因此配备管理器手工业安装

展开调节台,输入 devmgmt 回车,那是开荒设备管理器的中间一种办法,别的措施比方右键系统菜单栏Logo均能够张开职分管理器,只是选择命令行的章程很少见,那Ritter别记下一下。找到感兴趣的 设施节点,右键 属性(或更新驱动程序软件),切换来 驱动程序,能够打开感兴趣的操作。这里所看到所提供的选项,后续等您熟知了驱动装置的接口后,你会发掘都有照管的接口对应每一个成效选项。

  • 通进程序完成自动安装

能够参谋 WDF Sample 中的Driver Install Frameworks API (DIFxAPI) SampleDevice Console (DevCon) Tool 八个工程,分别提供了不一样调用接口的驱动装置方式,Device Console (DevCon) Tool 生成的devcon.exe 是一个作用强大的工具,不仅仅可用以驱动(包)的设置和卸载,还足以拿走道具的硬件ID,描述符以及配备所设置的驱动列表等音信,开拓职员能够从中一窥毕竟。

在使得的设置进程中,系统会自动记录安装的日记,在INF目录(路线一般在 C:Windowsinf下)下能够找到八个日志文件 setupapi.app.logSetupapi.dev.log ,查看那多少个日志文件有助于驾驭驱动装置的推行进程,同不常候也方便排查驱动装置进程中出现的百般。

使得的设置涉及到驱动文件的校验(保障驱动文件的完整性和合法性),驱动的事先级计算(选取最优的驱动去相配当前识别到的新的设备),驱动的放置目录(Driver Store)等内容。开荒职员熟识驱动装置逻辑有助于驱动的开销,感兴趣能够经过此处举办打探。

 

   6.  驱动签名

 

测验情形

由此VS集成开辟蒙受创造 Driver 施工方案后会生成三个品类,右键属性展开 XXX Package,右侧选中 Driver Signing ,在左边栏 Sign Mode 选择 Test Sign,在 Test Certificate选择 <Create test certificate...>,则在编写翻译时会自动生成测试具名证书。

 

延续祖宗门户条件

从Win10起首,驱动文件包不仅仅需求打开扩展验证 (EV) 代码签字,还必要提交到硬件开采主导仪表盘,具体操作指南能够参照此处,你能够在该文书档案上找到驱动签字所需的任何内容。

 

本文由永利皇宫463登录发布于操作系统,转载请注明出处:Windows的驱动开辟模型,Windows驱动wdf驱动开荒种类

关键词: