Windows驱动开发入门指引,深入浅出Windows驱动开发

   1.  前言

 

本条意见既适用于选拔软件技术员,也适用于系统软件程序猿。对于利用软件程序猿,低层的选择开拓平台是永葆应用开荒的底子,譬喻,基于Windows
SDK来支付Windows应用程序。那么,技士有必要知道Windows
SDK中的基本要素,诸如音讯分发机制、各类图片作用等。在此种意况下,阅读一些非凡的例证程序代码往往能起到便捷引领入门的机能。同样地,C/C++程序猿若是局限于C/C++语言本人,很难编写出高水平的实用程序。他们非但要掌握C/C++运行库中等高校函授数和类别的用法,以至还要理解这个函数和品种的兑现机理。固然源代码层面上的库,比方STL(C++的正规模板库),也急需了然其代码完毕技巧灵活自如地用好那么些库(比如STL中的种种容器数据构造、迭代器或算法)。

 

 

其五个关键内容是有关设备驱动装置(第12~14章)。第12章讲系统设置模块,从完整角度演说系统和设备驱动怎么着同盟完好地开展专门的工作;第13章叙述INF安装文件的底细,包涵种种域的功力,以致超级多安装指令的选用。第14章讲什么编写驱动装置软件。

 驱动分为如下二种档期的顺序:

WDF驱动程序包含七个门类,叁个是内核级的,称为KMDF(Kernel-Mode Driver
Framework),为SYS
文件;另三个是客商级的,称为UMDF(User-Mode
Driver Framework),为DLL文件。

本书的特色之生龙活虎,是对WDF框架做了超级多的切入。本书第一个至关心珍惜要内容是(第3~7章)围绕WDF而张开探讨,侧重视各有分化。第3章以框架为切磋的骨干;第4、5两章以WDF框架开辟USB和1394驱动;第6章陈说内核C++编制程序,也以WDF框架为底本;第7章叙述WDF驱动的测验和调和。

style=”font-family: ‘Microsoft YaHei’;”>有关软件驱动程序,你的三个选用为
KMDF 和水源格局 Windows NT 驱动程序模型。 使用 KMDF 和水源方式 Windows
NT 模型,你能够编写制定驱动程序,而没有必要思量即插即用 (PnP卡塔尔国 和电源管理。
你能够改为专一于驱动程序的重要职分上。 使用 KMDF,你不要思索 PnP
和电源,因为框架会为您管理 PnP 和电源。 使用基本方式 Windows NT
模型,你不要思索 PnP 和电源,因为功底形式服务在与 PnP
和电源管理完全毫无干系的情形中运营。

IO请求包-IRP

剩余的后生可畏部分章节,分别是有关驱动入门(第1、2章)、Windbg调节和测验命令(第8章)、内核同步(第9章)等剧情。

Windows驱动程序入门:

WDM 是 Win32道具驱动程序连串构造

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

  在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驱动。而到了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的上进会
让前面学习古板型驱动的着力半途而返。三个超人的事例是:大概在一九九四年到壹玖玖伍年间发布第四个本子的
硬盘上层过滤diskperf的代码,18年过去了,明日还能编写翻译并正常在新式版本的Vista上运营。
  本书对于大好些个不可能找到WDF实例的章节,都利用了古板型驱动实行表达。比方磁盘过滤、文件系统
过滤和互联网中间层驱动。别的为了从轻易出手,对于入门级的多少个例子(串口和键盘)也应用了守旧型
使得。可是设想磁盘和虚构网卡(第5章和第11章),使用了WDF版本的例子,请读者注意识别。

二〇〇九年10月5日于首都西二旗

WDM vs WDF

对于刚(Yu-Gang卡塔尔(قطر‎接触驱动开采的新手来说,笔者不建议使用WDM(Windows
驱动程序模型)举办支付。近期在英特网能找到的有关驱动开辟的中文图书基本上都以围绕WDM形式实行描述的,而有关WDF(Windows
驱动框架)开荒的书籍超级少,《竹林溪径——深入显出Window驱动开垦》和《Developing
Drivers with the Windows Driver
Foundation》算是两本陈述基于WDF开辟驱动的书籍,两个都能在英特网找到E-BOOK能源。

 

劳务调控管理程序 SCM
相像于linux的守护进度(在linux也许unix操作系统中在系统的指导的时候交易会开非常多劳动,那个劳动
就叫做守护进度)

为了便利Windows驱动程序的付出,Microsoft定义了叁个驱动程序框架,称为WDF(Windows
Driver Foundation),此中针对内核驱动程序的局地称作KMDF(Kernel-Mode
Driver
Framework)。KMDF实际上是一个库,它包裹了WDM中有的主干的代码逻辑,进而使程序猿能够进一层有利地编写出WDM驱动程序。KMDF能够部分地简化Windows内核驱动程序的支付任务,可是精气神上它并从未减少内核驱动程序的错综相连,以至须要程序猿付出额外的读书努力。

因职业上项指标急需,小编须求做驱动相关的付出,早前并没有接触过相关的学问,折腾风流罗曼蒂克段时间下来,功用如需兑现了,也储存了有的涉世和观点,所以在这里做番计算。

 

本身直接感到,编写程序是大器晚成件很奇异的业务,它能够推动创设和决定的欲念。每当本身读书或然编写生龙活虎段代码时,脑子里自然地就能够设想这段代码怎么着形成预约的逻辑。当面临三个面生的支付情况,大概一个新的根基平台时,首先要明白这一个条件还是平台是怎么着工作的,以至提供了什么作用。代码本人大概特别复杂,以至奥秘无穷,但经常状态下,真正美貌的高水平代码往往是简简单单的、易于驾驭的。对于代码编写者大概维护者来讲,真正见武功之处不在于代码本人,而介于对下层开辟平台的掌握和精晓能力,也许那正是俗称的“内功”。

 

windows服务在系统运转是加载,客户需在劳动调控平台开启可能关闭服务
Driver Service是劳务的贰个特例,服从windows服务的合计
加载和睦在NT驱动分为五个步骤:
1.为NT驱动成立新的劳务
2.敞开此项服务
3.关闭此项服务
4.刨除NT驱动创立的劳动
如上八个步骤都以通过SCM建立的劳动来贯彻的。

第三个主要内容是有关音录像驱动开垦(第10~11章)。音录制驱动包涵AVStream结构,本书做了较详细的论述。第10章陈诉使用AVStream小端口布局,第11章陈诉ASIO音频驱动开辟。

   3.  开发环境

累计的秘诀就是再DriverEntry里直面驱动对象DriverObject操作。该参数是二个指针,指向驱动对象,
使得对象内部有一个MajorFunction数组,该数组的种类是
NTSTATUS (*PDRIVER_DISPATCH) (IN PDEVICE_OBJECT DeviceObject,IN PIRP
Irp卡塔尔(قطر‎ 。那是二个函数指
针,指向每一种IRP对于的拍卖例程。最终正是为全体需求管理的IRP落成对应的例程。

 

发表评论

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

网站地图xml地图