Windows驱动开发入门指引,驱动开发的一些基本概念

   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驱动。而到了Windows2000,则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的腾飞会
让日前学习古板型驱动的不竭浅尝辄止。一个独立的事例是:差十分少在一九九五年到一九九二年间发表第叁个本子的
硬盘上层过滤diskperf的代码,18年过去了,今日照旧能够编写翻译并符合规律在新式版本的Vista上运转。
  本书对于大好些个不能找到WDF实例的章节,都接纳了古板型驱动举办验证。例如磁盘过滤、文件系统
过滤和互连网中间层驱动。别的为了从简单动手,对于入门级的四个例证(串口和键盘)也使用了传统型
使得。可是虚构磁盘和编造网卡(第5章和第11章),使用了WDF版本的例子,请读者注意鉴定识别。

 驱动分为如下几类别型:

 

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

劳务调节处理程序 SCM
类似于linux的守护进度(在linux只怕unix操作系统中在系统的辅导的时候会展开非常多服务,那么些服务
就叫做守护进度)

驱动程序不是没有疑问需求与硬件通信,如若急需拜候操作系统宗旨数据,往往应用程序未有丰裕的权力,这种情况则须求在基本格局下进展访问。就地点5种驱动类型,小编参谋着微软的驱动例子开拓过
鼠标键盘设备过滤驱动
互联网过滤软件驱动程序,所以对驱动开辟的知晓仍在浅水区,如在阅读进度中发觉有误的地点,还请不吝提议。

 

选择的驱动类型涉及到代码的达成(需无需牵挂PNP和电源处理)和驱动的安装(
NT式驱动程序以 service
的款式运转,别的驱动供给动用通用的INF文件安装),微软的官方文书档案那样提到:

windows服务在系统运营是加载,顾客需在劳务调控平台开启可能关闭服务
Driver 瑟维斯是劳务的叁个特例,遵循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管理例程。

发表评论

电子邮件地址不会被公开。 必填项已用*标注