找回密码
 立即注册
搜索

Windows驱动开发之开发环境的搭建(一)

2024-11-21 09:53| 发布者: admin| 查看: 29| 评论: 0

摘要: 一、简介Windows驱动开发是指为Windows操作系统编写内核模式驱动程序的过程。驱动程序是操作系统与硬件设备之间的桥梁,它负责管理和控制硬件设备,使其能够与操作系统和应用程序进行交互。随着 windows 系统的更新 ...
 一、简介

Windows驱动开发是指为Windows操作系统编写内核模式驱动程序的过程。驱动程序是操作系统与硬件设备之间的桥梁,它负责管理和控制硬件设备,使其能够与操作系统和应用程序进行交互。随着 windows 系统的更新迭代,windows 驱动开发技术也是不断的升级:从最早期的 VXD(Virtual X Driver)(已废弃)到 windows 2000 上推出的 WDM(Windows Driver Model)驱动模型,随后从 windows vista 推出的 WDF(Windows Driver Foudation)驱动模型,沿用至今;WDF 是 WDM 的升级版,并且在一定程度上兼容,WDF 是微软目前推荐的驱动开发模型。

以下是Windows驱动开发的一般步骤和相关概念:

  1. 确定需求:首先,确定需要开发的驱动程序的具体功能和目标设备。了解设备的特性和操作系统的要求,明确开发的目标。

  2. 驱动模型:Windows操作系统提供了多种驱动模型,如传统的设备驱动模型 (WDM),新的驱动模型 (KMDF) 和用户模式驱动框架 (UMDF)。选择适合的驱动模型,并理解其工作原理和特性。

  3. 开发环境:为了进行驱动开发,需要搭建合适的开发环境。这包括安装适当的Windows驱动开发工具包(如Windows Driver Kit)和配置相应的开发环境。

  4. 驱动程序结构:根据所选择的驱动模型,创建驱动程序的基本结构。这包括驱动程序入口函数(DriverEntry)、设备对象(Device Object)、驱动程序回调函数(如读取、写入、创建等操作的处理函数)等。

  5. 设备注册:驱动程序需要将自己注册到操作系统中,使其能够被加载和使用。这涉及注册设备接口、创建设备对象、设置设备属性等操作。

  6. 设备操作:实现设备操作的处理函数,如读取、写入、创建、关闭等。这些函数定义了设备的行为和与应用程序的交互方式。

  7. 内存管理:在驱动开发中,需要管理和分配内核内存。了解如何使用操作系统提供的内存管理函数和数据结构,避免内存泄漏和访问错误。

  8. 错误处理:合理处理错误情况,返回适当的错误代码,以便应用程序和操作系统能够正确处理驱动程序的异常情况。

  9. 调试和测试:驱动开发过程中进行适当的调试和测试是非常重要的。使用调试工具和技术来诊断和修复问题,确保驱动程序的稳定性和正确性。

  10. 部署和发布:完成驱动程序开发后,需要将驱动程序部署到目标系统上。这包括创建驱动程序安装程序、签名驱动程序、编写驱动程序文档等。

需要注意的是,Windows驱动开发属于内核模式开发,与传统的用户模式应用程序开发有所不同

二、开发环境搭建

若要开始操作,首先确保已安装 Microsoft Visual StudioWindows 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 驱动开发环境配置成功。

 


路过

雷人

握手

鲜花

鸡蛋

相关分类

QQ|Archiver|手机版|小黑屋|软件开发编程门户 ( 陇ICP备2024013992号-1|甘公网安备62090002000130号 )

GMT+8, 2024-11-21 15:45 , Processed in 0.038430 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

返回顶部