大发体育娱乐在线-大发体育娱乐官方网站-大发体育娱乐登录网址
做最好的网站

Windows驱动开垦入门指导,驱动开垦的有的基本概

来源:http://www.dfwstonefabricators.com 作者:操作系统 人气:192 发布时间:2019-09-19
摘要:   1.  前言 WDK(Windows DriverKit)是一种截然集成的驱动程序开拓体系,它包罗 Windows DDK,用于测量试验Wi ndows 驱动器的可信性和平静性. 因职业上项指标急需,我必要做驱动相关的付出

   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驱动也是有它的一多元职业。
  然则本书采纳精炼的界别方法。将整个在Windows3000~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的发展会
让眼下学习古板型驱动的竭力半途而返。二个特出的例子是:大致在一九九三年到1993年间发布第4个版本的
硬盘上层过滤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 二零一二 + 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 输出
  • 与应用程序的报纸发表:调节代码、I传祺Q,诉求队列

 

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

 

本文由大发体育娱乐在线发布于操作系统,转载请注明出处:Windows驱动开垦入门指导,驱动开垦的有的基本概

关键词:

上一篇:没有了

下一篇:没有了

最火资讯