通过参考官方例程可以很容易实现拥有特定功能
分类:网站首页

   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驱动。而到了Windows3000,则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的进步会
让日前学习守旧型驱动的竭力半途而返。七个杰出的例子是:大致在1992年到1994年间公布第二个版本的
硬盘上层过滤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

对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 输出
  • 与应用程序的通信:调整代码、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) 代码签名,还须要提交到硬件开辟中央仪表盘,具体操作指南能够仿照效法此处,你能够在该文书档案上找到驱动签字所需的任何内容。

 

本文由网上正规真人赌钱网站发布于网站首页,转载请注明出处:通过参考官方例程可以很容易实现拥有特定功能

上一篇:之后会见必要权限央求时附上 Token 进行访谈 下一篇:没有了
猜你喜欢
热门排行
精彩图文