一、简介
Windows驱动开发是指为Windows操作系统编写内核模式驱动程序的过程。驱动程序是操作系统与硬件设备之间的桥梁,它负责管理和控制硬件设备,使其能够与操作系统和应用程序进行交互。随着 windows 系统的更新迭代,windows 驱动开发技术也是不断的升级:从最早期的 VXD(Virtual X Driver)(已废弃)到 windows 2000 上推出的 WDM(Windows Driver Model)驱动模型,随后从 windows vista 推出的 WDF(Windows Driver Foudation)驱动模型,沿用至今;WDF 是 WDM 的升级版,并且在一定程度上兼容,WDF 是微软目前推荐的驱动开发模型。
以下是Windows驱动开发的一般步骤和相关概念:
- 确定需求:首先,确定需要开发的驱动程序的具体功能和目标设备。了解设备的特性和操作系统的要求,明确开发的目标。
- 驱动模型:Windows操作系统提供了多种驱动模型,如传统的设备驱动模型 (WDM),新的驱动模型 (KMDF) 和用户模式驱动框架 (UMDF)。选择适合的驱动模型,并理解其工作原理和特性。
- 开发环境:为了进行驱动开发,需要搭建合适的开发环境。这包括安装适当的Windows驱动开发工具包(如Windows Driver Kit)和配置相应的开发环境。
- 驱动程序结构:根据所选择的驱动模型,创建驱动程序的基本结构。这包括驱动程序入口函数(DriverEntry)、设备对象(Device Object)、驱动程序回调函数(如读取、写入、创建等操作的处理函数)等。
- 设备注册:驱动程序需要将自己注册到操作系统中,使其能够被加载和使用。这涉及注册设备接口、创建设备对象、设置设备属性等操作。
- 设备操作:实现设备操作的处理函数,如读取、写入、创建、关闭等。这些函数定义了设备的行为和与应用程序的交互方式。
- 内存管理:在驱动开发中,需要管理和分配内核内存。了解如何使用操作系统提供的内存管理函数和数据结构,避免内存泄漏和访问错误。
- 错误处理:合理处理错误情况,返回适当的错误代码,以便应用程序和操作系统能够正确处理驱动程序的异常情况。
- 调试和测试:驱动开发过程中进行适当的调试和测试是非常重要的。使用调试工具和技术来诊断和修复问题,确保驱动程序的稳定性和正确性。
- 部署和发布:完成驱动程序开发后,需要将驱动程序部署到目标系统上。这包括创建驱动程序安装程序、签名驱动程序、编写驱动程序文档等。
需要注意的是,Windows驱动开发属于内核模式开发,与传统的用户模式应用程序开发有所不同
二、开发环境搭建
若要开始操作,首先确保已安装 Microsoft Visual Studio、Windows SDK 和 Windows 驱动程序工具包 (WDK)。
1.安装VS2019
下载Visual Studio Installer, 安装时工作负载选择 使用C++的桌面开发 。
由于WDK 默认启用了 Spectre 缓解,需要在单个组件中添加生成工具对应版本的 Spectre 缓解库 。(这里只下载了x64/x86处理器架构)
安装Windows 10 SDK,版本为10.0.19041.0
2.安装WDK
注意:下载的 WDK 需要与 VS 2019下载时的 Windows 10 SDK 版本对应
对于 WDF 驱动模型其开发环境叫 WDK(Windows Driver Kit)
对于 WDM 驱动模型其开发环境叫 DDK(Driver Development Kit)
等待WDK下载安装完成,关闭时默认选择安装 WDK VS 扩展。
VS2019和WDK安装成功后,可以到在 Windows设置-应用 中可以查看当前安装的SDK与WDK版本是否一致
随后打开VS2019的的创建项目页面,就看到 KMDF/UMDF 等选项,表示 windows 驱动开发环境配置成功。