使得开辟的片段基本概念,竹林蹊径亚洲城ca88手机版官网

亚洲城ca88手机版官网

   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
SDK来开采Windows应用程序。那么,工程师有须要知道Windows
SDK中的基本要素,诸如音信分发机制、各类图片成效等。在这里种景观下,阅读一些独立的事例程序代码往往能起到急速引领入门的效率。相仿地,C/C++技术员假如局限于C/C++语言自身,很难编写出高水平的实用程序。他们非但要调整C/C++运维库中等高校函授数和品种的用法,以至还要领悟这么些函数和档期的顺序的兑现机理。固然源代码层面上的库,比方STL(C++的正规化模板库),也亟需通晓其代码完结手艺灵活自如地用好那个库(比方STL中的各类容器数据结构、迭代器或算法)。

Windows驱动程序入门:

WDF驱动程序富含四个品种,三个是内核级的,称为KMDF(Kernel-Mode Driver
Framework),为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~2003以那时期现身的新模型叫做WDM。
  Windows的驱动模型概念,本来是就驱动程序的作为来讲的。比如WDM驱动,必需求满意提供n种被要
求的风味(如电源管理、即插即用)才被叫作”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的底蕴上加码了意气风发部分新的特征,制定了部分新的正规而造
就的。绝大多数函数调用都是通用的。当然,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版本的事例,请读者注意甄别。

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
和电源管理完全无关的情状中运维。

 

二零一零年七月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已经扶助封装了绝大好些个的接口);
  • 种种对象:驱动对象,设备对象,WDF对象,文件对象,队列对象;
  • 使得上下文:有时称为设备扩充,用于存款和储蓄特定设备对象的有关新闻的数据结构;
  • 指标的放走:要求怀念区别属性对象释放的火候;
  • 中断乞求等级:管理不当易导致蓝屏;
  • 分页与非分页内部存款和储蓄器;
  • 同步锁:回调同步锁、框架等待锁、自旋锁、中断锁等;
  • 日志追踪记录:
    调节和测量检验的至关重要,能够运用 WPP(Windows软件追踪预管理器)或简捷的
    DebugPrint 输出
  • 与应用程序的通信:调节代码、IPAJEROQ,央求队列

 

   5.  驱动安装

 

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

支出的驱动程序未有开展具名或许应用测量试验具名,则须求在设备上开启测量检验形式,具体操作为:展开调控台,输入:

bcdedit /set testsigning on

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

假使要关闭测验情势,则需在支配台输入:

bcdedit /set testsigning off

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

 

本书是小编依照连年的做事学习经历,总括的直白驱动开垦资料。本书越多的是经验之谈,一些实行中的小开掘小意外,颇为书中剧情添彩。

以劳动的方式运行

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

 

本书的特点之风姿浪漫,是对WDF框架做了很多的切入。本书第多少个至关心注重要内容是(第3~7章)围绕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) Sample
Device Console (DevCon) Tool
多个工程,分别提供了差别调用接口的驱动装置方式,Device Console (DevCon) Tool
生成的devcon.exe
是一个功效强大的工具,不独有可用来驱动(包)的设置和卸载,还能够获得器具的硬件ID,描述符以致设备所设置的驱动列表等消息,开荒人士能够从当中意气风发窥毕竟。

在驱动的设置进程中,系统会自动记录安装的日记,在INF目录(路线平日在 C:\Windows\inf下)下能够找到四个日志文件
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配备驱动者,本书尤其有用。本书对于入行较久,经验丰盛的工程师,也装有一定的参谋价值。

发表评论

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

网站地图xml地图