金沙澳门唯一官网Windows驱动开垦入门引导,驱动

2019-10-05 02:24 来源:未知

   1.  前言

WDK(Windows Driver Kit)是一种截然集成的驱动程序开荒种类,它包罗 Windows DDK,用于测量检验Wi
ndows 驱动器的可信赖性和安静性.

因专门的学业上项目标供给,作者须求做驱动相关的支付,在此以前并不曾接触过有关的文化,折腾一段时间下来,功用如需兑现了,也积攒了有个别经验和观念,所以在此做番总计。

WDM 是 Win32设备驱动程序种类布局

对此驱动开辟的支付辅导,微软官方文书档案网址已经提供了很详细的教程文书档案,况兼在Github上提供了一名目多数规范的例程源码用于开拓人士参谋。开采人士在享有一定的驱动概念知识后,通过参照他事他说加以考察官方例程能够很轻便完结全数一定作用的驱动应用程序。

Windows设备驱动程序,过去是WDM(Windows Driver Model)框架,编程复杂,初学者难以精晓其编制程序
中央。为了缓解这一主题材料,微软对WDM驱动程序的架构做了革新,造成了全新的WDF(Windows Driver F
oundation)框架结构。它提供了面向对象和事件驱动的驱动程序开垦框架,大大缩小了付出难度。从现
在开始,精晓Windows设备驱动程序的开辟人士,由过去的“专门的工作”职员,将成为“普通”大众。

Windows驱动程序入门:

WDF驱动程序包罗四个门类,一个是内核级的,称为KMDF(Kernel-Mode Driver Framework),为SYS
文本;另三个是客户级的,称为UMDF(User-Mode Driver Framework),为DLL文件。

Github:

 

 

 Windows的驱动开采模型

   2.  驱动类型

  在Windows的例外版本上付出的驱动程序 "模型"(模型那些词语应该来自单词“Mode”。在Win
dowsNT上,驱动程序被喻为KernelDriverMode驱动程序。
小编感觉那几个Mode是指一种驱动程序的构造和
运作的正规),有过不相同的称号。举例在Windows9x上的驱动程序,都称为VXD,而在WindowsNT上的驱动
程序被叫作KDM驱动程序,Windows98~两千以此时期出现的新模型叫做WDM。
  Windows的驱动模型概念,本来是就驱动程序的行为来说的。举个例子WDM驱动,必须求满足提供n种被要
求的本性(如电源处理、即插即用)才被称为"WDM驱动"。假诺不提供这个效率,那么统一称为NT式驱动。
长久以来的,WDF驱动也可能有它的一密密麻麻标准。
  不过本书选择精炼的界别方法。将总体在Windows三千~WindowsVista下能符合规律运作且未调用WDF相
关的内核API函数的驱动都称呼守旧型驱动(满含NT式和WDM)。假若调用了WDF相关的内核API则称得上WD
F驱动。
  请小心:WDF驱动是足以调用古板型驱动所调用的内核API的,WDF能够视为守旧型的晋级版。
  模型的迈入并非和操作系统版本的升官齐步走的,而是有一个日益替代的长河。举例Windows98已
经帮衬部分的WDM驱动程序,可是又扶助部分的VXD驱动。而到了Windows三千,则VXD这种驱动程序完
全被淘汰了。KDM则是WDM的前身。WDM是在KDM的根基上平添了一些新的性子,拟订了一些新的专门的学业而造
就的。绝超越贰分一函数调用都以通用的。当然,Windows9x系列的水源完全差别,所以VXD与之相比较,就没
有一个内核API函数是同等的。
  故而随着Windows9x的打入冷宫,VXD难逃通透到底被淘汰的时局。WindowsNT则进步成了新兴的Windows版本
,KDM也变为了WDM而存在下去。当然,微软不会闲着,现在又推出了新的WDF。读者又不得不担忧:本书
是用WDM写的照旧用WDF写的吗?会不会刚刚学完又被淘汰呢?
  和VXD差别,从KDM到WDM再到WDF是一脉相传的,基本上KDM技术员在读书WDM时早就占尽了方便人民群众。到
WDF也不例外,WDF与其说是新的驱动开垦模型,还比不上说是在已部分内核API和数据结构的基础上,又封
装出一套让使用者感觉更简明、更易用的以Wdf-开首的一组API。由此,读者完全没要求担忧WDF的升华会
让后边学习古板型驱动的鼎力废然则返。多少个优异的例证是:大概在1995年到1994年间发表第1个版本的
硬盘上层过滤diskperf的代码,18年过去了,今日依然能够编写翻译并不荒谬在最新版本的Vista上运营。
  本书对于绝大好多不可能找到WDF实例的章节,都施用了古板型驱动举行表明。比如磁盘过滤、文件系统
过滤和互联网中间层驱动。别的为了从轻松入手,对于入门级的多少个例子(串口和键盘)也运用了古板型
使得。不过虚构磁盘和设想网卡(第5章和第11章),使用了WDF版本的事例,请读者注意辨别。

 驱动分为如下二种档案的次序:

 

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

服务调控管理程序 SCM
就如于linux的医生和医护人员进度(在linux大概unix操作系统中在系统的教导的时候会张开比较多劳动,这个劳动
就称为守护进程)

驱动程序不是必然要求与硬件通信,若是要求寻访操作系统大旨数据,往往应用程序未有丰富的权杖,这种场所则必要在根本情势下开展访谈。就地点5种驱动类型,笔者参照他事他说加以考察着微软的驱动例子开荒过 鼠标键盘设备过滤驱动互联网过滤软件驱动程序,所以对驱动开采的知道仍在浅水区,如在读书进程中开采有误的地点,还请不吝提出。

 

运用的驱动类型涉及到代码的兑现(需无需思考PNP和电源管理)和驱动的装置( NT式驱动程序以 service 的格局运维,其余驱动须求选取通用的INF文件安装),微软的合朝鲜语档那样提到:

windows服务在系统运营是加载,顾客需在劳动调控平台开启也许关闭服务
Driver Service是劳动的三个特例,服从windows服务的商酌
加载和睦在NT驱动分为七个步骤:
1.为NT驱动创制新的劳动
2.敞开此项服务
3.闭馆此项服务
4.去除NT驱动创造的劳动
上述四个步骤都以通过SCM创设的劳动来促成的。

style="font-family: 'Microsoft YaHei';">有关软件驱动程序,你的八个选项为 KMDF 和基本情势 Windows NT 驱动程序模型。 使用 KMDF 和基本情势 Windows NT 模型,你能够编写驱动程序,而没有须求思索即插即用 (PnP) 和电源管理。 你能够改为专注于驱动程序的首要职责上。 使用 KMDF,你不要思量 PnP 和电源,因为框架会为你管理 PnP 和电源。 使用基础形式 Windows NT 模型,你不用思念 PnP 和电源,因为基本方式服务在与 PnP 和电源管理完全非亲非故的意况中运行。

 

   3.  开发环境

IO请求包-IRP

 

IRP(IO央浼包)用于win32和驱动程序通信,NT内核有多个零件叫做IO管理器。IO管理器承担IRP的分发
,驱动程序里成立好设施何况成立好标识链接后,Win32即可加载驱动了。而要让贰个使得可以管理I
RP,必须给驱动增多IRP处理例程。

Visual Studio + WDK(Windows Driver Kit)

拉长的法子正是再DriverEntry里面前碰着驱动对象DriverObject操作。该参数是三个指针,指向驱动对象,
使得对象内部有多个MajorFunction数组,该数组的花色是
NTSTATUS (*PDRIVER_DISPATCH) (IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp) 。那是贰个函数指
针,指向每一个IRP对于的管理例程。最终就是为全部供给管理的IRP达成对应的例程。

在那之中WDK须求团结手动下载安装

 

作者是在Windows平台上开辟,使用的付出情况为 Visual Studio 2012 + 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 输出
  • 与应用程序的通信:调节代码、ILX570Q,央浼队列

 

   5.  驱动安装

 

测量检验景况下安装驱动前

付出的驱动程序未有展开签订公约或许利用测验具名,则需求在器材上展开测验格局,具体操作为:打开调节台,输入:

bcdedit /set testsigning on

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

要是要关张测量试验情势,则需在支配台输入:

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) 代码签字,还索要交给到硬件开垦为主仪表盘,具体操作指南能够参考此处,你能够在该文书档案上找到驱动具名所需的别样内容。

 

TAG标签:
版权声明:本文由金沙澳门唯一官网发布于金沙澳门唯一官网,转载请注明出处:金沙澳门唯一官网Windows驱动开垦入门引导,驱动