Windows驱动开发入门指引

   2.  驱动类型

style=”font-family: ‘Microsoft YaHei’;”>有关软件驱动程序,你的六个拔取为
KMDF 和根本形式 Windows NT 驱动程序模型。 使用 KMDF 和基本形式 Windows
NT 模型,你可以编写驱动程序,而无需考虑即插即用 (PnP) 和电源管理。
你可以改为专心于驱动程序的重要任务上。 使用 KMDF,你不用考虑 PnP
和电源,因为框架会为您处理 PnP 和电源。 使用基本格局 Windows NT
模型,你不要考虑 PnP 和电源,因为根本形式服务在与 PnP
和电源管理完全无关的环境中运行。

 

对此驱动开发的支付指点,微软官方文档网站已经提供了很详细的教程文档,并且在Github上提供了一文山会海典型的例程源码用于开发人士参考。开发人员在拥有一定的驱动概念知识后,通过参考官方例程可以很容易实现所有一定功效的驱动应用程序。

测试环境

透过VS集成开发环境创制 Driver
解决方案后会生成四个类别,右键属性打开 XXX Package,左边选中
Driver Signing ,在右手栏 Sign Mode 选择 Test Sign,在
Test Certificate选择
<Create test certificate...>,则在编译时会自动生成测试签名证书。

 

生产环境

从Win10先导,驱动文件包不仅需要开展扩展验证
(EV)
代码签名,还亟需付出到硬件开发主题仪表盘,具体操作指南可以参考此处,你可以在该文档上找到驱动签名所需的此外内容。

 

驱动程序不是必然需要与硬件通讯,假若急需拜访操作系统焦点数据,往往应用程序没有丰盛的权能,这种气象则需要在基础模式下展开走访。就地点5种驱动类型,笔者参考着微软的驱动例子开发过
鼠标键盘设备过滤驱动
网络过滤软件驱动程序,所以对驱动开发的领悟仍在浅水区,如在读书过程中窥见有误的地方,还请不吝指出。

以服务的样式运行

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

 

   3.  开发环境

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

 

 

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

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

按照WDF的驱动开发

WDF的支出需要按照一定的条条框框,开发实现时需要考虑较多的底细,由于篇幅有限,笔者凭着自己的经验暂且稍做列举,后续将写一篇针对WDF驱动开发的作品。

  • PNP和电源管理(WDF已经援助封装了绝大多数的接口);
  • 各个对象:驱动对象,设备对象,WDF对象,文件对象,队列对象;
  • 使得上下文:有时称为设备扩大,用于存储特定设备对象的有关新闻的数据结构;
  • 目的的自由:需要考虑不同性质对象释放的机会;
  • 中断请求级别:处理不当易导致蓝屏;
  • 分页与非分页内存;
  • 同步锁:回调同步锁、框架等待锁、自旋锁、中断锁等;
  • 日记跟踪记录:
    调试的必不可少,可以运用 WPP(Windows软件追踪预处理器)或简捷的
    DebugPrint 输出
  • 与应用程序的报道:控制代码、IRQ,请求队列

 

   5.  驱动安装

 

利用的驱动类型涉及到代码的落实(需不需要考虑PNP和电源管理)和驱动的装置(
NT式驱动程序以 service
的款式运行,其他驱动需要利用通用的INF文件安装),微软的官方文档这样提到:

WDM vs WDF

对于刚接触驱动开发的新手来说,笔者不指出利用WDM(Windows
驱动程序模型)举办开发。近日在网上能找到的有关驱动开发的粤语图书基本上都是围绕WDM情势开展描述的,而至于WDF(Windows
驱动框架)开发的图书寥寥无几,《竹林溪径——深入浅出Window驱动开发》和《Developing
Drivers with the Windows Driver
Foundation
》算是两本讲述基于WDF开发驱动的书本,两者都能在网上找到电子书资源。

 

Visual Studio +
WDK(Windows Driver Kit)

   4.  实现方式

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

 

笔者是在Windows平台上付出,使用的付出环境为
Visual Studio 2013 + WDK 8.1

因工作上连串的需要,笔者需要做驱动相关的支出,从前并从未接触过相关的知识,折腾一段时间下来,效率如需兑现了,也积累了有些经历和见地,所以在此做番总结。

测试环境下安装驱动前

付出的驱动程序没有开展签字或者使用测试签名,则需要在装置上开启测试情势,具体操作为:打开控制台,输入:

bcdedit /set testsigning on

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

倘若要关张测试形式,则需在决定台输入:

bcdedit /set testsigning off

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

 

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

 

 驱动分为如下两种档次:

   1.  前言

相关文章