Windows驱动开发入门指引

   1.  前言

因为工作达成型之需,笔者需要开使相关的支付,之前连不曾沾了有关的文化,折腾一段时间下来,功能而需要兑现了,也累了部分经验以及意见,所以在此举行番总结。

对此让开发的支付指引,微软官文档网站已提供了老详细的课程文档,并且在Github上提供了平等多元典型的例程源码用于开发人员参考。开发人员在颇具一定的使概念知识后,通过参考官方例程可以生爱实现有一定功能的教应用程序。

Windows驱动程序入门:
https://docs.microsoft.com/zh-cn/windows-hardware/drivers/gettingstarted/

Github:
https://github.com/Microsoft/Windows-driver-samples

 

   2.  驱动类型

 驱动分为如下几种档次:

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

驱动程序不是早晚得和硬件通讯,如果需要拜访操作系统核心数据,往往应用程序没有足够的权杖,这种情况虽然需要在根本模式下进展走访。就地方5种植使型,笔者参考着微软的使例子开发过
鼠标键盘设备过滤驱动
网过滤软件驱动程序,所以本着驱动开发的接头仍以浅水区,如以翻阅过程中发现有误的地方,还求不吝指出。

使的叫型涉及到代码的落实(需不需要考虑PNP和电源管理)和让的装(
NT式驱动程序以 service
的形式运行,其他驱动需要采取通用的INF文件安装),微软的合法文档这样干:

style=”font-family: ‘Microsoft YaHei’;”>有关软件驱动程序,你的片独挑选也
KMDF 和根本模式 Windows NT 驱动程序模型。 使用 KMDF 和基本模式 Windows
NT 模型,你可以编制驱动程序,而任由需考虑即插即用 (PnP) 和电源管理。
你可更改也专心于驱动程序的首要任务上。 使用 KMDF,你不用考虑 PnP
和电源,因为框架会呢您处理 PnP 和电源。 使用基础模式 Windows NT
模型,你不要考虑 PnP 和电源,因为根本模式服务在和 PnP
和电源管理了无关之条件遭到运行。

   3.  开发环境

 

Visual Studio +
WDK(Windows Driver Kit)

里WDK需要自己手动下载安装

作者是在Windows平台上付出,使用的开销条件呢
Visual Studio 2013 + 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 输出
  • 跟应用程序的报道:控制代码、IRQ,请求队列

 

   5.  驱动安装

 

测试环境下安装驱动前

支出之驱动程序没有展开签约或者利用测试签名,则需要在装置及打开测试模式,具体操作为:打开控制台,输入:

bcdedit /set testsigning on

回车,会提示:操作成功完成。
然后重新开设备,开机后会见于电脑桌面右下方显示出“测试模式”字样内容的水印。

要是要关测试模式,则需要于决定高输入:

bcdedit /set testsigning off

回车,同样会提醒:操作成功完成。
重开设备后则会意识桌面右下角的水印消失。

 

以服务之款型运行

NT式的驱动程序允许为 service
的形式运行, 服务安装的例程可以参考 WDF Sample 中的 Eventdrv
工程,或者参考我形容的关于经过网络监督的使例程的开源代码

 

行使INF文件安装

配备相关的叫装置可选取INF进行安装,INF安装文件的编撰建议从
WDF Sample
中找到适当的INF文件进行修改,如果您想打听INF的语法,可以参照这里

  • 经设备管理器手工安装

打开控制台,输入 devmgmt
回车,这是打开设备管理器的内部同样种植方式,其他措施以右键系统菜单栏图标均可以打开任务管理器,只是下命令行的方法较少见,这里特别记下转。找到感兴趣之
设施节点,右键 属性(或更新驱动程序软件),切换至
驱动程序,可以拓展感兴趣的操作。这里所盼所提供的选取项,后续等您熟悉了让装置的接口后,你见面发觉还发生相应之接口对应每个功能选项。

  • 经过程序实现自动装

得参考 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.  驱动签名

 

测试环境

透过VS集成开发环境创建 Driver
解决方案后会变卦两单门类,右键属性打开 XXX Package,左侧选中
Driver Signing ,在右边栏 Sign Mode 选择 Test Sign,在
Test Certificate选择
<Create test certificate...>,则当编译时见面自动生成测试签名证书。

 

生产环境

自从Win10开端,驱动文件管不仅要开展扩展验证
(EV)
代码签名,还用付出至硬件开发中心仪表盘,具体操作指南可以参照此处,你可当该文档上找到令签名所用的另内容。

 

相关文章