澳门新葡8455手机版-澳门新葡8455最新网站

您的位置:澳门新葡8455手机版 > 产品测评 > 因此参照他事他说加以考察官方例程能够很轻便

因此参照他事他说加以考察官方例程能够很轻便

2019-10-05 10:20

   1.  前言

WDK(Windows Driver 基特)是一种截然集成的驱动程序开荒种类,它满含 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~2000以此时期出现的新模型叫做WDM。
  Windows的驱动模型概念,本来是就驱动程序的作为来讲的。例如WDM驱动,供给求满足提供n种被要
求的特色(如电源管理、即插即用)才被叫做"WDM驱动"。借使不提供这个功能,那么统一称为NT式驱动。
完全一样的,WDF驱动也是有它的一多元专门的学问。
  可是本书选择简易的分化方法。将全方位在Windows2000~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的升高会
让日前学习古板型驱动的全力浅尝辄止。二个卓绝的事例是:大致在一九九二年到1991年间公布第多个本子的
硬盘上层过滤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

对于刚(Yu-Gang)接触驱动开采的新手来讲,作者不提议利用WDM(Windows 驱动程序模型)进行开采。近日在英特网能找到的有关驱动开拓的汉语图书基本上都是围绕WDM情势开展描述的,而有关WDF(Windows 驱动框架)开垦的图书十分的少,《竹林溪径——深入显出Window驱动开辟》和《Developing Drivers with the Windows Driver Foundation》算是两本叙述基于WDF开垦驱动的图书,两个都能在网络找到电子书财富。

 

基于WDF的驱动开采

WDF的支付须要依据一定的平整,开垦完毕时索要思索相当多的细节,由于篇幅有限,作者凭着自身的经历临时稍做列举,后续将写一篇针对WDF驱动开采的篇章。

  • PNP和电源管理(WDF已经补助封装了绝大好些个的接口);
  • 种种对象:驱动对象,设备对象,WDF对象,文件对象,队列对象;
  • 使得上下文:一时称为设备扩张,用于存储特定设备对象的相干消息的数据结构;
  • 指标的放走:须求思考分歧属性对象释放的机缘;
  • 中断必要等级:处理不当易导致蓝屏;
  • 分页与非分页内存;
  • 同步锁:回调同步锁、框架等待锁、自旋锁、中断锁等;
  • 日志追踪记录: 调节和测量检验的要求,能够应用 WPP(Windows软件追踪预管理器)或简捷的 DebugPrint 输出
  • 与应用程序的通信:调整代码、IRubiconQ,诉求队列

 

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

 

本文由澳门新葡8455手机版发布于产品测评,转载请注明出处:因此参照他事他说加以考察官方例程能够很轻便

关键词: