当前位置: 欧洲杯竞猜 > 计算机知识 > 正文

Windows驱动开荒入门教导,驱动开垦的风流倜傥对

时间:2019-11-14 21:36来源:计算机知识
   1.  前言 WDK(Windows DriverKit卡塔 尔(英语:State of Qatar)是生龙活虎种截然集成的驱动程序开荒类别,它包罗 Windows DDK,用于测量检验Wi ndows 驱动器的可信性和安宁性. 推 荐 序 因职

   1.  前言

WDK(Windows Driver Kit卡塔 尔(英语:State of Qatar)是生龙活虎种截然集成的驱动程序开荒类别,它包罗 Windows DDK,用于测量检验Wi
ndows 驱动器的可信性和安宁性.

因职业上种类的急需,我供给做驱动相关的费用,以前并从未接触过相关的知识,折腾生机勃勃段时间下来,功用如需兑现了,也积攒了有的涉世和观念,所以在那做番计算。

WDM 是 Win32装置驱动程序体系布局

自身直接感觉,编写程序是风姿洒脱件很诡异的作业,它能够推动创制和调节的欲念。每当本身读书也许编写生机勃勃段代码时,脑子里自然地就能够虚构这段代码怎么样实现预订的逻辑。当面前碰到二个面生的付出景况,可能三个新的根底平台时,首先要精晓那几个意况如故平台是怎么行事的,以致提供了何等成效。代码本人也许特别复杂,以致奥密无穷,但普通状态下,真正美貌的高水平代码往往是粗略的、易于掌握的。对于代码编写者也许维护者来讲,真正见武功的地点不在于代码自身,而在于对下层开拓平台的精晓和明白才具,或者那便是俗称的“内功”。

对于驱动开采的付出辅导,微软官方文书档案网址已经提供了很详细的学科文书档案,况兼在Github上提供了一雨后冬笋规范的例程源码用于开拓人员仿照效法。开拓人士在享有一定的驱动概念知识后,通过参谋官方例程能够超轻松完成全体一定成效的驱动应用程序。

Windows设备驱动程序,过去是WDM(Windows Driver Model卡塔尔国框架,编制程序复杂,初读书人难以调整其编制程序
宗旨。为了化解那生龙活虎主题素材,微软对WDM驱动程序的架构做了修改,产生了全新的WDF(Windows Driver F
oundation卡塔尔架构。它提供了面向对象和事件驱动的驱动程序开拓框架,大大裁减了付出难度。从现
在初叶,驾驭Windows设备驱动程序的开采职员,由过去的“职业”人员,将变为“普通”大众。

本条意见既适用于接受软件技师,也适用于系统软件程序员。对于利用软件技士,低层的利用开荒平台是支撑应用开拓的底子,比如,基于Windows SDK来支付Windows应用程序。那么,程序猿有不可缺乏知道Windows SDK中的基本要素,诸如新闻分发机制、种种图片功效等。在此种景色下,阅读一些超人的例证程序代码往往能起到高速引领入门的效劳。相像地,C/C 程序猿倘使局限于C/C 语言本人,很难编写出高水平的实用程序。他们不唯有要驾驭C/C 运维库中等高校函授数和项目标用法,以至还要理解这一个函数和品种的兑现机理。固然源代码层面上的库,譬如STL(C 的标准模板库卡塔 尔(阿拉伯语:قطر‎,也须要精通其代码完毕能力灵活自如地用好那个库(比如STL中的各个容器数据结构、迭代器或算法卡塔 尔(阿拉伯语:قطر‎。

Windows驱动程序入门:

WDF驱动程序包括五个品类,三个是内核级的,称为KMDF(Kernel-Mode Driver Framework卡塔 尔(英语:State of Qatar),为SYS
文件;另叁个是顾客级的,称为UMDF(User-Mode Driver Framework卡塔 尔(阿拉伯语:قطر‎,为DLL文件。

那么,对于系统软件技师,“内功”是怎么着呢?系统软件是指操作系统本身照旧依赖于操作系统上为运用软件提供劳务的软件。系统软件恐怕有机遇跟硬件直接打交道,那给与了程序员越来越强的调控技术,他们有机会参加操作系统的行事逻辑,以致校正操作系统的表现特征。但随之而来的是对系统软件代码的更加高必要。今世操作系统为运用软件提供了很强的容错技术,应用程序的挫败平时不会涉嫌到操作系统本身的平静,但操作系统对系统软件的容错手艺却比较轻便,毕竟系统软件运行起来现在大概被融合到操作系统的执行逻辑中产生操作系统的黄金时代有个别。由此,领悟和操纵操作系统的运转乘机制作而成为系统程序猿编写出准确、高效的系统软件的基本前提。所谓“内功”,便着落在这里。

Github:

 

在Windows平台上开采软件,编写Windows内核驱动程序是最佳核查技术员“内功”的。内核驱动程序的代码量常常一点都不大,但驱动程序框架中的任何多少个函数,以至这么些函数中其余意气风发行代码背后都大概包罗着复杂的逻辑,只怕隐式的需求和借使。固然驱动程序编写者在纯粹自行定义的函数中,也亟须安营扎寨地好感一些与景况有关的成分,例如代码是不是可被中断、是或不是可重入,只怕所引述的内部存款和储蓄器是不是被换到到外部存款和储蓄器。其他方面,应用程式开荒中的超级多定义,例如地址空间、内部存款和储蓄器管理、万分管理和四十五线程并发等,在驱动程序开辟中恐怕必要有两样的精通方法。其它,常用的C运转库函数基本上不再适合于驱动程序了,驱动程序编写者必得面前碰着二个全新的平底情状和协助平台。因而,要编写制定可科学生运动维的驱动程序,程序猿不止要理解地通晓驱动程序所针没有错目标设备或效果与利益(可能满含硬件配备的各类特色卡塔尔,还要调控Windows内核是何许与驱动程序打交道的,以至幼功福建中国广播公司大管理和平运动行机制,越发是内存管理、线程调整和产出调整。

 

 Windows的驱动开辟模型

当Windows内核驱动程序被加载到根本中何况运转之后,它们产生了Windows内核的大器晚成有的,驱动程序中的接口函数在适龄的每天被基本调用,那是Windows驱动程序的基本专业方式。Microsoft定义了WDM(Windows驱动程序模型卡塔尔国来显明驱动程序的布局,以至Windows内核如何与WDM驱动程序打交道。WDM不止包含I/O微电脑定义的驱动程序框架,还定义了在驱动程序中如何支撑PnP(Plug and Play,即插即用卡塔尔、电源管理和WMI(Windows Management Instrumentation,Windows管理标准卡塔尔。由此,若要编写贰个全然支持WDM的驱动程序,也急需精晓WDM中所涉及的次第内核组件。

   2.  驱动类型

  在Windows的不等版本上支付的驱动程序 "模型"(模型那一个词语应该来自单词“Mode”。在Win
dowsNT上,驱动程序被誉为KernelDriverMode驱动程序。
作者认为这些Mode是指后生可畏种驱动程序的构造和
运维的正规化卡塔 尔(阿拉伯语:قطر‎,有过差别的名目。比如在Windows9x上的驱动程序,都称得上VXD,而在WindowsNT上的驱动
前后相继被称为KDM驱动程序,Windows98~二零零三那个时期现身的新模型叫做WDM。
  Windows的驱动模型概念,本来是就驱动程序的一颦一笑来说的。比如WDM驱动,必供给满足提供n种被要
求的特征(如电源管理、即插即用卡塔 尔(英语:State of Qatar)才被可以称作"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的根基上加码了一些新的特点,制订了部分新的正经而造
就的。绝当先55%函数调用都以通用的。当然,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年间发布第二个本子的
硬盘上层过滤diskperf的代码,18年过去了,今日仍旧得以编写翻译并不荒谬在新式版本的Vista上运行。
  本书对于超级多不只怕找到WDF实例的章节,都选用了古板型驱动举办求证。举个例子磁盘过滤、文件系统
过滤和互联网中间层驱动。别的为了从轻便入手,对于入门级的八个例证(串口和键盘卡塔 尔(英语:State of Qatar)也运用了古板型
使得。不过设想磁盘和虚构网卡(第5章和第11章卡塔尔,使用了WDF版本的例子,请读者注意甄别。

Windows内核驱动程序与根本的严密关联性使得驱动程序的调节和测量检验极为不方便人民群众,从某种意义上讲,驱动程序的调和等同于Windows内核的调治。何况,对于有个别特定的逻辑错误,内核调节和测验器以至是心有余而力不足的。正因为这一个缘故,内核驱动程序的代码尽恐怕精练,从软件设计角度来说,应最大程度地把效用代码放到应用程序中,在驱动程序中只留下最至关重要的效能逻辑。那样的布署也得以使Windows内核被不得法驱动程序代码牵连而招致稳定性难点的可能率相对减弱。

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

 

为了有帮忙Windows驱动程序的费用,Microsoft定义了四个驱动程序框架,称为WDF(Windows Driver Foundation卡塔尔,个中针对内核驱动程序的一些号称KMDF(Kernel-Mode Driver Framework卡塔 尔(阿拉伯语:قطر‎。KMDF实际上是一个库,它包裹了WDM中有个别中坚的代码逻辑,进而使技师可以更进一层有益地编写出WDM驱动程序。KMDF可以部分地简化Windows内核驱动程序的付出职分,不过精气神上它并没有减退内核驱动程序的头昏眼花,以至需求技师付出额外的就学努力。

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

劳务控制管理程序 SCM
看似于linux的医生和护师进程(在linux大概unix操作系统中在系统的辅导的时候会敞开比相当多劳务,这个劳动
就称为守护进度卡塔尔国

同理可得,作为一名系统技术员,你供给看清目的操作系统中与您的软件打交道的各样零器件,也要那多少个掌握地明白你所依赖的开拓工具是何许援救你成功这点的。系统程序猿往往直面着比使用程序猿更加长的上学曲线,可是,系统程序猿从编写程序中拿到的野趣也是在接纳层上麻烦心得获得的。笔者言听计行,当你开采本身编写的软件模块已经与操作系统内核融为后生可畏体时,那一刻你的以为一定是手心里攥着叁个操作系统——操作系统尽在您的掌握控制中了。

驱动程序不是分明须求与硬件通信,就算急需拜望操作系统主旨数据,往往应用程序未有丰盛的权柄,这种景观则须求在幼功方式下进展探访。就地方5种驱动类型,作者仿效着微软的驱动例子开辟过 鼠标键盘设备过滤驱动互联网过滤软件驱动程序,所以对驱动开荒的通晓仍在浅水区,如在读书进度中开采成误之处,还请不吝建议。

 

那本书《竹林蹊径——深入显出Windows驱动开垦》是几人作者张佩、马勇和董鉴源的新颖力作,他们将团结在执行中储存起来的涉世整理成册,以期望后读书人能少走弯路,减弱Windows驱动程序开垦的读书之路。那本书根本介绍了KMDF、USB/1394和音频驱动程序的费用,以至配备驱动程序的发行和安装。提出有自然Windows驱动程序开辟根底的读者看生机勃勃看那本书,极度是,即便您正盘算动用KMDF,恐怕正在致力与USB/1394或音频驱动程序相关的编制程序工作,那么,那本书就是豆蔻梢头份难得的实施教导了。

应用的驱动类型涉及到代码的落到实处(需不需求酌量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 和电源管理完全无关的情形中运维。

 

二零零六年1月5日于首都西二旗

   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落成对应的例程。

竹林蹊径:深入显出Windows驱动开辟

在那之中WDK必要本人手动下载安装

 

张佩 马勇 董鉴源 编著

笔者是在Windows平台上付出,使用的费用条件为 Visual Studio 二〇一二 WDK 8.1

ISBN 978-7-121-12555-3

 

2011年2月出版

   4.  实现方式

定价:69.00元

 

16开

WDM vs WDF

对此刚接触驱动开荒的生手来说,小编不提出接受WDM(Windows 驱动程序模型卡塔尔实行支付。这段时间在英特网能找到的关于驱动开采的普通话图书基本上都以围绕WDM方式开展描述的,而至于WDF(Windows 驱动框架卡塔尔国开拓的书本不多,《竹林溪径——深入显出Window驱动开荒》和《Developing Drivers with the Windows Driver Foundation》算是两本呈报基于WDF开采驱动的书籍,两个都能在网络找到E-BOOK财富。

 

532页

听说WDF的驱动开荒

WDF的支付需求依照一定的平整,开拓实现时须求考虑超级多的底细,由于篇幅有限,小编凭着本身的资历权且稍做列举,后续将写后生可畏篇针对WDF驱动开垦的稿子。

  • PNP和电源管理(WDF已经扶助封装了大多的接口卡塔 尔(英语:State of Qatar);
  • 各样对象:驱动对象,设备对象,WDF对象,文件对象,队列对象;
  • 使得上下文:有的时候称为设备扩张,用于存款和储蓄特定设备对象的连带音讯的数据结构;
  • 目的的放走:必要思考不一样属性对象释放的机遇;
  • 中断诉求品级:管理不当易导致蓝屏;
  • 分页与非分页内部存款和储蓄器;
  • 同步锁:回调同步锁、框架等待锁、自旋锁、中断锁等;
  • 日记追踪记录: 调节和测量检验的必备,能够行使 WPP(Windows软件追踪预微电脑卡塔 尔(阿拉伯语:قطر‎或简捷的 DebugPrint 输出
  • 与应用程序的简报:调控代码、I揽胜极光Q,须求队列

 

   5.  驱动安装

 

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

支付的驱动程序未有实行签名恐怕利用测验具名,则必要在器材上张开测量试验形式,具体操作为:张开调节台,输入:

bcdedit /set testsigning on

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

借使要关闭测量试验情势,则需在决定台输入:

bcdedit /set testsigning off

回车,相仿会提醒:操作成功完成。 重启设备后则会发觉桌面右下角的水印消失。

 

本书是笔者依照连年的干活学习经历,总计的直接驱动开采资料。本书更加多的是阅世之谈,一些实施中的小开采小意外,颇为书中内容添彩。

以服务的样式运行

NT式的驱动程序允许以 service 的样式运营, 服务安装的例程能够参照他事他说加以考查 WDF Sample 中的 Eventdrv 工程,只怕参谋笔者写的关于进度网络监督的驱动例程的开源代码

 

本书的性状之生龙活虎,是对WDF框架做了很多的切入。本书第三个重视内容是(第3~7章卡塔 尔(英语:State of Qatar)围绕WDF而张开探讨,侧入眼各有差别。第3章以框架为研究的骨干;第4、5两章以WDF框架开拓USB和1394使得;第6章陈述内核C 编程,也以WDF框架为蓝本;第7章陈说WDF驱动的测量检验和调养。

应用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.  驱动签名

 

其次个首要内容是关于音录像驱动开辟(第10~11章卡塔 尔(阿拉伯语:قطر‎。音摄像驱动满含AVStream架构,本书做了较详细的论述。第10章叙述使用AVStream小端口架构,第11章陈述ASIO音频驱动开荒。

测量试验景况

透过VS集成开垦蒙受创造 Driver 技术方案后会生成多个项目,右键属性张开 XXX Package,侧边选中 Driver Signing ,在侧面栏 Sign Mode 选择 Test Sign,在 Test Certificate选择 <Create test certificate...>,则在编写翻译时会自动生成测量试验签字证书。

 

其多个根本内容是有关设备驱动装置(第12~14章卡塔尔国。第12章讲系统安装模块,从完整角度论述系统和道具驱动怎样合作完好地开展工作;第13章汇报INF安装文件的细节,满含各样域的法力,甚至众多装置指令的接受。第14章讲什么编写驱动装置软件。

延续祖宗门户条件

从Win10起来,驱动文件包不仅仅必要实行扩大验证 (EV) 代码签名,还索要交给到硬件开采为主仪表盘,具体操作指南能够参见此处,你能够在该文档上找到驱动具名所需的别的内容。

 

剩下的片段章节,分别是有关驱动入门(第1、2章卡塔尔国、Windbg调节和测试命令(第8章卡塔尔国、内核同步(第9章卡塔尔等剧情。

本书切合经常入门级内核程序猿,对WDF有乐趣,希图支付USB或1394设备驱动者,本书尤其有用。本书对于入行较久,资历丰富的技师,也具备自然的参谋价值。

编辑:计算机知识 本文来源:Windows驱动开荒入门教导,驱动开垦的风流倜傥对

关键词: 欧洲杯竞猜