您的位置:澳门新葡8455最新网站 > 澳门新葡8455最新网站 > 使得开辟的部分基本概念,Windows驱动开辟入门教

使得开辟的部分基本概念,Windows驱动开辟入门教

发布时间:2019-10-07 09:06编辑:澳门新葡8455最新网站浏览(139)

       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驱动。而到了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的前行会
    让方今学习守旧型驱动的大力一曝十寒。多个超人的例子是:大概在1993年到一九九一年间公布第四个本子的
    硬盘上层过滤diskperf的代码,18年过去了,明日依旧得以编写翻译并符合规律在新式版本的Vista上运营。
      本书对于大许多无法找到WDF实例的章节,都接纳了守旧型驱动举行认证。比方磁盘过滤、文件系统
    过滤和互联网中间层驱动。其余为了从简单入手,对于入门级的八个例子(串口和键盘)也选拔了古板型
    使得。不过设想磁盘和虚拟网卡(第5章和第11章),使用了WDF版本的例证,请读者注意甄别。

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

     

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

    劳动调控管理程序 SCM
    临近于linux的守护进程(在linux大概unix操作系统中在系统的辅导的时候会展开比比较多劳务,这一个劳务
    就叫做守护进度)

    驱动程序不是顺其自然需求与硬件通信,假使急需拜谒操作系统主题数据,往往应用程序未有丰富的权限,这种场地则必要在基础形式下进展访谈。就地方5种驱动类型,小编参谋着微软的驱动例子开垦过 鼠标键盘设备过滤驱动网络过滤软件驱动程序,所以对驱动开垦的知道仍在浅水区,如在读书进程中开掘有误的地点,还请不吝提议。

     

    运用的驱动类型涉及到代码的兑现(需不须要思虑PNP和电源处理)和驱动的装置( NT式驱动程序以 service 的款式运转,别的驱动需求选用通用的INF文件安装),微软的合韩语档那样提到:

    windows服务在系统运营是加载,客商需在服务调整平台开启大概关闭服务
    Driver Service是服务的一个特例,遵循windows服务的公约
    澳门新葡8455最新网站,加载和睦在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 贰零壹贰 + WDK 8.1

     

       4.  实现方式

     

    WDM vs WDF

    对此刚接触驱动开采的菜鸟来说,笔者不提出使用WDM(Windows 驱动程序模型)进行开采。近年来在网络能找到的关于驱动开垦的国语图书基本上都以环绕WDM情势开展描述的,而至于WDF(Windows 驱动框架)开辟的图书没多少,《竹林溪径——深入显出Window驱动开垦》和《Developing Drivers with the Windows Driver Foundation》算是两本叙述基于WDF开辟驱动的图书,两个都能在网络找到电子书能源。

     

    依靠WDF的驱动开荒

    WDF的开发需求依据一定的平整,开拓实现时供给思量比较多的内部意况,由于篇幅有限,小编凭着自身的经历一时稍做列举,后续将写一篇针对WDF驱动开辟的稿子。

    • PNP和电源管理(WDF已经辅助封装了多数的接口);
    • 各类对象:驱动对象,设备对象,WDF对象,文件对象,队列对象;
    • 使得上下文:不经常称为设备扩展,用于存款和储蓄特定设备对象的连锁音信的数据结构;
    • 目的的放走:需求思考差别属性对象释放的空子;
    • 中断央求等第:管理不当易导致蓝屏;
    • 分页与非分页内部存款和储蓄器;
    • 同步锁:回调同步锁、框架等待锁、自旋锁、中断锁等;
    • 日志追踪记录: 调节和测量试验的画龙点睛,能够应用 WPP(Windows软件追踪预处理器)或简捷的 DebugPrint 输出
    • 与应用程序的简报:调节代码、IEscortQ,乞请队列

     

       5.  驱动安装

     

    测量试验境遇下安装驱动前

    开垦的驱动程序未有展开具名大概使用测量试验具名,则须求在装置上开启测验格局,具体操作为:展开调控台,输入:

    bcdedit /set testsigning on
    

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

    若果要关门测量检验方式,则需在决定台输入:

    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) 代码具名,还亟需付出到硬件开采为主仪表盘,具体操作指南可以参照此处,你能够在该文档上找到驱动签名所需的另外内容。

     

    本文由澳门新葡8455最新网站发布于澳门新葡8455最新网站,转载请注明出处:使得开辟的部分基本概念,Windows驱动开辟入门教

    关键词: