【window驱动开发入门】

1、驱动类型
设备函数驱动
设备筛选器驱动
软件驱动
文件系统筛选器驱动
文件系统驱动

  1. 驱动类型关乎代码的实现和驱动的安装
  • NT式驱动程序以services的形式运行
  • 其它驱动采用同样的INF文件安装
  • 软件驱动程序2个选项:KMDF和内核模式window NT驱动程序模型
  1. 基于WDF的驱动开发
    各种对象:驱动对象、设备对象、WDF对象、文件对象、队列对象
    驱动上下文:称为设备扩展,用于存储特定设备对象相关信息的数据结构
    对象的释放:考虑不同性质对象释放的时机
    中断请求级别:处理不当容易导致蓝屏
    分页与非分页
    同步锁:回调同步锁、框架等待锁、自旋锁、中断锁等
    日志跟踪记录:调试必备,可采用WPP(window软件追踪预处理器)或简单的DebugPrint输出
    与应用程序通讯:控制代码IoCtrlxxx,IRQ、请求队列
  2. 驱动安装
    测试环境下安装驱动前:
  • 开启测试模式:bcdedit /set testsigning on
  • 重启设备
  • 关闭测试模式:bcdedit /set testsigning off

5.1 以服务形式运行
NT式的驱动程序允许以service的形式运行
5.2 使用INF文件安装
设备相关的驱动安装可以选择INF进行安装,

  • 通过设备管理器手动安装:打开cmd,输入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.log 和 Setupapi.dev.log ,查看这两个日志文件有利于理解驱动安装的执行过程,同时也有利于排查驱动安装过程中出现的异常。
  1. 驱动签名
    6.1 测试环境
    通过VS集成开发环境创建 Driver 解决方案后会生成两个项目,右键属性打开 XXX Package,左侧选中 Driver Signing ,在右侧栏 Sign Mode 选择 Test Sign,在 Test Certificate选择 <Create test certificate...>,则在编译时会自动生成测试签名证书
    6.2 生产环境
    从Win10开始,驱动文件包不仅需要进行扩展验证 (EV) 代码签名,还需要提交到硬件开发中心仪表盘,具体操作指南可以参考此处,你可以在该文档上找到驱动签名所需的任何内容

Windows下如何创建低权限进程
https://www.cnblogs.com/liaoguifa/p/lower-process-integrity.html

本地系统服务例程:Nt和Zw系列函数
https://www.cnblogs.com/liaoguifa/p/9647870.html

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容