Windows 驱动开发环境搭建

news2024/9/21 22:04:41

Windows 驱动开发环境搭建及 windbg 调试工具安装使用

  • 引言
  • 了解 Windows 驱动开发环境
  • 下载 Windows 驱动开发环境
    • 根据需要下载安装对应版本的 Visual Studio
    • 下载安装对应的 WDK 工具包
  • 编写第一个驱动代码
  • 总结
  • 参考资料


引言

对于 Windows 驱动开发,在微软官方的文档中其实有很多有用的文档来进行讲解和学习,这里将驱动开发统一归类成了 Windows 硬件开发(https://learn.microsoft.com/zh-cn/windows-hardware/drivers/),在这个链接的相关文档中能够找到我们所需要的所有内容(由于Windows的不开源,所以我们对于Windows相关的学习要全部依赖官方释放的资料)。

开始学习 Windows 驱动开发,首先需要搭建属于自己的开发环境(这样在学习过程中能够自己尝试演示、验证),Windows 下的开发工作很多都依赖复杂的开发环境搭建,这部分工作量还挺大(相比 Linux 环境下),这是由于 Windows 的开发 IDE 虽然部署复杂但是使用起来会节省(掩盖)很多操作。

本章的主要内容如下:

  • 了解 Windows 驱动开发环境
  • 下载 Windows 驱动开发环境
  • 编写一个最简单的 NT 驱动
  • 编译完成 NT 驱动(表示当前开发环境已经搭建完成),后续在调试中会演示安装驱动及调试过程。

了解 Windows 驱动开发环境

早先的 Windows 驱动开发环境更多是通过 VC++ 来进行,结合使用 Windows 驱动开发工具包(WDK)进行编译完成。但是我接触这部分内容的时候 Windows 已经更新发布了 Windows11 了,所以对 Windows 驱动开发工具这部分也有了很大的变化和优化。

现如今,Windows 驱动程序开发环境和 Windows 调试器已集成到 Microsoft Visual Studio 中。 在此集成的驱动程序开发环境中,Visual Studio 界面中提供有编码、构建、打包、部署和测试驱动程序所需的大部分工具。Visual Studio 可以说是 Windows 操作系统中软件开发的利器,通过这个 IDE 我们可以进行 Windows 驱动开发、Windows 界面应用开发、Windows 程序调试等等。

所以,我们现在要部署 Windows 驱动开发环境,就需要先安装 Visual Studio,然后再安装 Windows 驱动开发工具包(WDK)。 要了解如何获取 Visual Studio 和 WDK,请访问 WDK 设置和下载页面(WDK 设置和下载页面)。 Windows 调试工具(Windows调试工具)包含在 WDK 安装中。

WDK 使用 MSBuild.exe,Visual Studio 用户界面中提供有此程序,并且它也可以作为命令行工具提供。 在 Visual Studio 环境中创建的驱动程序使用项目和解决方案文件来描述项目或项目组。 Visual Studio 环境提供有用于将旧源和目录文件转换成项目和解决方案文件的工具。

Visual Studio 环境提供适用于以下项的模板:

  • 新驱动程序
  • 驱动程序包
  • 新测试
  • 现有测试的增强功能
  • 自定义驱动程序部署脚本

在 Visual Studio 环境中,你可以配置构建流程,使其自动创建和签署驱动程序包。 Visual Studio 中提供了静态和实时分析工具。 你可以配置用于测试驱动程序的目标计算机,并在每次重建时将你的驱动程序自动部署到目标计算机。 你可以从多个运行时测试中进行选择,也可以编写自己的测试。

下载 Windows 驱动开发环境

下载安装 Windows 驱动开发环境的操作步骤:

  1. 选择合适的 Visual Studio 版本进行下载安装;
  2. 选择对应的 WDK 版本进行下载安装;

根据需要下载安装对应版本的 Visual Studio

由于 Windows 操作系统的内核版本不同导致我们对于要开发 Windows 驱动也需要考虑该驱动要适配的 Windows 版本,不同的目标操作系统版本需要使用到不同版本的 VS 开发环境和不同版本的 WDK 包。具体可以参考如下表格内容:

下表指明了不同版本的 WDK 需要的 Visual Studio 版本。

Windows 目标版本Visual Studio 版本
Windows 11 版本 21H2、Windows Server 2022、Windows 10 版本 2004、Windows 10 版本 1903Visual Studio Community 2019、Visual Studio Professional 2019、Visual Studio Enterprise 2019
Windows 10 版本 1809、Windows 10 版本 1803、Windows 10 版本 1709Visual Studio Community 2017、Visual Studio Professional 2017、Visual Studio Enterprise 2017
Windows 10 版本 1703、Windows 10 版本 1607Visual Studio Express 2015 桌面版、Visual Studio Community 2015、Visual Studio Professional 2015、Visual Studio Enterprise 2015
Windows 8.1 更新、Windows 8.1Visual Studio 2013
Windows 8Visual Studio Professional 2012、Visual Studio Ultimate 2012

安装 Visual Studio 时,选择 使用 C++ 的桌面开发 工作负载。 Windows 10 软件开发工具包 (SDK) 会自动包括在内,并显示在右侧的“摘要”窗格中。

若要开发 Arm/Arm64 驱动程序,请选择 单个组件,然后在 编译器、生成工具和运行时 下选择 适用于 Arm/Arm64 的 Visual C++ 编译器和库

这里需要注意一下,由于我的版本比较高,只需要下载 Visual Studio 即可(内部包含了 Windows SDK)。如果开发的目标系统运行 Windows 10 版本 1607 或 Windows 10 版本 1703,则应安装 Visual Studio 2015,然后再下载并安装适用于目标 Windows 10 版本的 Windows SDK 版本,如下表所示。

Windows 目标版本Windows SDK 版本
Windows 10 版本 1703适用于 Windows 10.0.15063.468 的 Windows SDK
Windows 10 版本 1607适用于 Windows 10.0.14393.795 的 Windows SDK
Windows 8.1适用于 Windows 8.1 的 Windows SDK
Windows 8适用于 Windows 8 的 Windows SDK

Windows SDK 未包含在 Visual Studio 2015 中,因此必须单独安装 SDK。 更高版本的 Visual Studio 包含 Windows SDK。

我这里选择的目标 Windows 操作系统版本是 Windows 10 22H2 版本。
在这里插入图片描述
选择 Visual Studio 版本只需要考虑 Windows 大版本即可,不过要注意 Windows 10 1903、Windows 10 1809、Windows 10 1703 这几个有跨度的版本所需要的 Visual Studio 版本是不一致的,分别对应 2019、2017、2015。

我们这里选择下载使用 Visual Studio 2019 社区版。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
我这里已经安装完成,并且我由于不同的目标版本原因,还同时安装了不同版本的 Visual Studio,这里只需要安装 2019 版本,并且安装只需要选择 使用C++的桌面开发

在这里插入图片描述
在这里插入图片描述
这里选择完成后,执行下载安装即可。(这个过程可能需要一点时间,并且要确保网络正常)

完成后启动打开就能看到 Visual Studio 2019 的启动界面了。
在这里插入图片描述
现在我们还没有安装对应的 WDK(Windows 驱动开发包),所以现在选择新建项目还没有 driver 对应的解决方案可以选择。

下载安装对应的 WDK 工具包

和 Visual Studio 选择版本一样,我们也需要根据情况选择安装对应的 WDK 版本。

WDK 与 Visual Studio 和 Windows 调试工具 (WinDbg) 集成在一起。 此集成环境提供了开发、生成、打包、部署、测试和调试驱动程序所需的工具。(从 Windows 10 版本 1709 开始,安装 WDK 时会默认安装 Visual Studio 的 WDK 扩展。 这些扩展是将 WDK 与 Visual Studio 集成所必需的。)

Windows 目标版本WDK 和相关下载
Windows 11 版本 22H2下载 Windows 驱动程序工具包 (WDK)
Windows 11 版本 21H2Windows 11 版本 21H2 WDK
Windows Server 2022适用于 Windows Server 2022 的 WDK
Windows 10 版本 22H2、Windows 10 版本 21H2、Windows 10,版本 21H1、Windows 10 版本 20H2、Windows 10 版本 2004适用于 Windows 10 版本 2004 的 WDK
Windows 10 版本 1909、Windows 10 版本 1903适用于 Windows 10 版本 1903 的 WDK
Windows 10 版本 1809、Windows Server 2019适用于 Windows 10 版本 1809 的 WDK
Windows 10 版本 1803适用于 Windows 10 版本 1803 的 WDK
Windows 10 版本 1709适用于 Windows 10 版本 1709 的 WDK
Windows 10 版本 1703适用于 Windows 10 版本 1703 的 WDK
Windows 10 版本 1607、Windows 10 版本 1511、Windows 10 版本 1507、Windows Server 2016适用于 Windows 10 版本 1607 的 WDK
Windows 8.1 更新WDK 8.1 更新仅 (英语) - 永久不可用、WDK 8.1 更新测试包仅 (英语) - 永久不可用、WDK 8.1 示例(注意:可以使用从 Windows 10 版本 1607 到 Windows 11 版本 21H2 的任何 WDK 为Windows 8.1生成驱动程序。)
Windows 7WDK 7.1.0
Windows 8WDK 8(仅英语)、WDK 8 可再发行组件(仅英语)、WDK 8 示例

由于我们需要的是 Windows10 22H2 对应版本的 WDK,所以根据上表对应选择适用于 Windows 10 版本 2004 的 WDK。(wdksetup.exe)

这个安装过程就很简单了,只需要一直 next 到最后就完成安装了。当这里安装完成 WDK 后,我们再次打开 Visual Studio 2019,然后选择新建项目,就可以在项目类型中选择 Driver 了,这就表示我们的 Windows 驱动开发环境已经搭建完成了。

编写第一个驱动代码

在上一部分,我们已经完成了 Windows 的驱动开发环境部署。这里,就尝试编写一个最简单的驱动来验证我们的环境。

  1. 打开 Visual Studio 2019,选择新建项目,项目类型中选择 Driver,然后选择 Kernel Model Driver(KMDF),点击 下一步
    在这里插入图片描述

  2. 输入新建项目名称、存储路径,点击 创建
    在这里插入图片描述
    IDE 工具会自动帮我们完成基础的文件创建,在解决方案资源管理器中可以看到已经自动创建的文件。
    在这里插入图片描述

  3. 什么都不改,直接选择 生成- 生成解决方案,会编译生成一个空的 Windows driver 文件在刚刚我们存储的路径下
    在这里插入图片描述
    这里就完成了一个最基本的 Windows driver 的创建和编译生成。
    在后面的章节中,我们了解到关于 Windows 驱动相关的概念后,再进行添加代码和部署、调试等操作。

总结

本章内容简单介绍了关于 Windows 驱动开发环境的相关知识,并基于 Windows 10 22H2 的操作系统版本进行了 Windows 驱动开发环境的部署验证。要完成 Windows 驱动开发环境需要根据自己开发的目标操作系统版本选择对应的 Visual Studio 版本及 WDK(Windows 驱动工具包)版本。安装步骤也是先安装 Visual Studio 后安装 WDK。如果是高版本的 Windows 操作系统这两步就完成了(因为需要的 Windows SDK 已经集成到 Visual Studio 中),如果是 Visual Studio 2015 版本以下则需要再单独下载安装 Windows SDK 。

通过本章内容的学习,相信大家已经能够在自己的机器上部署完成 Windows 驱动开发环境了。后面就可以专心学习关于 Windows 驱动相关的技术内容了。

参考资料

https://learn.microsoft.com/zh-cn/windows-hardware/drivers/
https://learn.microsoft.com/zh-cn/windows-hardware/drivers/download-the-wdk
https://learn.microsoft.com/zh-cn/windows-hardware/drivers/other-wdk-downloads

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/697847.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

go定时任务crontab

在linux里可以通过crontab -e或者vi /etc/crontab编辑定时任务,区别在于后者只有root用户可以,还可以指定shell环境,不建议修改,修改前建议备份,前者任何用户都可以使用,两者修改后都不用修改自动重启。 1…

尚无忧宠物托运小程序app源码前景如何?

宠物托运市场调研分析 由于宠物托运在交通运输中并不是一个很大的类目,行业尚缺乏标准的流程规范与相关的监管机制,目前我国市面上常见的三方宠物托运公司多无正规手续,更有多数公司不具备相关运输资质。 如今,宠物经济不断崛起…

Linux:安装tomcat

注意:1.安装tomcat时最好用非root用户安装 2.可以选择新建一个用户,用户安装部署tomcat,本文将继续用fovace账户进行tomcat安装 一、前置条件 安装tomcat需要先安装jdk,所以先确定系统中是否已经有jdk,如下&#xff1a…

Minecraft-生成运行Spigot服务端

一、安装 先下载一个.jar的服务端核心,选择自己需要的版本 spigot核心下载 二、配置 下载完后,创建一个.bat批处理文件 内容填写如下,xxx.jar是你下载的核心名称 -Xms1G表示服务器所使用的最低运行内存为1G -Xmx1G表示服务器所使用的最高运行…

力扣 113. 路径总和 II

题目来源:https://leetcode.cn/problems/path-sum-ii/description/ C题解:采用递归法,前序遍历,遍历每个叶子节点,路径和满足条件则将该路径保存下来。 class Solution { public:void getlujing(TreeNode* node, int …

【MySQL】表中插入数据时,查询时,中文数据变成??

解决办法: 重新创建一个表(users) 将字符集那栏勾选上

[Windows] 电脑专属后花园 HideUL软件隐藏工具v1.0便携版

如下图所示:这一堆乱七八糟的东西,看起来又特难受…… 下载:https://download.csdn.net/download/mo3408/87961003 更有甚者,如果我们在电脑安装了一些比较特殊且不方便被别人看到的软件,也是一件麻烦事。 所以,今天我就给大家推荐一款可以隐藏电脑软件的小工具,仅需简…

【致敬未来的攻城狮计划】打卡4:检测按键

按键模块 后台轮询 按键也是一个比较简单的模块,主要是为了学习IO输入模式。 查看RA2E1电路图可见: 按键相关引脚是004引脚,默认上拉高电平,按下接地为低电平。 首先第一步还是设置对应引脚。类似上一期设置LED的方式&#xf…

【电磁泄密】网络杂谈(2)之电磁泄密及防护

涉及知识点 什么是电磁泄密,电磁泄密的渠道,电磁泄密该如何去防护,电磁泄密的防护标准。深入了解电磁泄密防护手段。 原创于:CSDN博主-《拄杖盲学轻声码》,更多内容可去其主页关注下哈,不胜感激 文章目录 …

内存分区.

内存模型分区: ****代码区:存放CPU执行的机器指令。通常代码区是可共享的(即另外的执行程序可以调用它),使其可共享的目的是对于频繁被执行的程序,只需要在内存中有一份代码即可。代码区通常楚只读的,使其只读的原因是…

NXP i.MX 8M Plus工业开发板硬件说明书( 四核ARM Cortex-A53 + 单核ARM Cortex-M7,主频1.6GHz)

前 言 本文主要介绍创龙科技TLIMX8MP-EVM评估板硬件接口资源以及设计注意事项等内容。 创龙科技TLIMX8MP-EVM是一款基于NXP i.MX 8M Plus的四核ARM Cortex-A53 单核ARM Cortex-M7异构多核处理器设计的高性能工业评估板,由核心板和评估底板组成。ARM Cortex-A53(…

VR全景如何保存本地,一个按钮即可解决

导语: 对于许多用户来说,保存VR全景作品到本地常常是一项繁琐而费时的任务。然而,现在有了蛙色3DVR平台,一切变得简单轻松,让您享受到便捷的离线导出体验。 平台为用户提供了专业的离线导出功能,使您能够轻…

Seata-DTX|分布式事务金融场景案例介绍

文|魏陈豪(花名:无陈 Sam) 蚂蚁集团 SOFAStack 产品专家 本文 2966 字 阅读 8 分钟 序言 今天给大家带来一篇 Seata-DTX[1] 商业版分布式事务在金融行业如何保证事务一致性的实践介绍。从一个全局视角出发看看一致性的保证、分别有哪些节点&a…

全志科技T3国产工业评估板规格书(四核ARM Cortex-A7,主频1.2GHz)

1 评估板简介 创龙科技TLT3-EVM是一款基于全志科技T3处理器设计的4核ARM Cortex-A7高性能低功耗国产评估板,每核主频高达1.2GHz,由核心板和评估底板组成。 评估板接口资源丰富,引出双路网口、双路CAN、双路USB、双路RS485等通信接口&#x…

3、Redis7 十大数据类型(二)

1.8 bitmap(位图)操作命令 SETBIT 设置 格式:setbit 参数1 参数2 参数3 参数1:bitmap名称 参数2:索引 参数3:值( 1 | 0 ) 示例: 将bitmap1的第一个位置的值设为1 s…

常用的flex布局

文章目录 1. flex布局流式布局自动换行2. flex布局流式布局自动换行3. flex横向滚动4. flex 等分5. flex百分比布局6. flex圣杯布局 1. flex布局流式布局自动换行 <!-- 第一种方式: flex布局流式布局自动换行 每行显示3个 --> <div class"box"><div c…

Matlab 主成分分析法

主成分分析 本文将介绍主成分分析(PCA)&#xff0c;主成分分析是一种降维算法&#xff0c;它能将多个指标转换为少数几个主成分&#xff0c;这些主成分是原始变量的线性组合&#xff0c;且彼此之间互不相关&#xff0c;其能反映出原始数据的大部分信息。 一般来说&#xff0c;…

基于SpringBoot+vue的职称评审管理系统设计与实现

博主介绍&#xff1a; 大家好&#xff0c;我是一名在Java圈混迹十余年的程序员&#xff0c;精通Java编程语言&#xff0c;同时也熟练掌握微信小程序、Python和Android等技术&#xff0c;能够为大家提供全方位的技术支持和交流。 我擅长在JavaWeb、SSH、SSM、SpringBoot等框架…

钳式高频电流探头测量电流和提高灵敏度的方法

高频电流探头是一款可以同时测量直流和交流的高频电流探头。高频电流探头采用先进的磁电传感器&#xff0c;通过测试电流所产生的磁场信号实现对电流信号的准确测量&#xff0c;产品坚固耐用&#xff0c;能够大大减少了操作难度&#xff0c;提高测量的准确性。 为了测量数据准确…

Python笔记-1

Python安装问题 1.python是一门解释性的计算机程序语言。 2.IDLE就是我们写Python程序的地方&#xff08;小型的集成开发环境&#xff0c;编辑器&#xff09;。 3.Pycharm是一个大型的集成开发环境&#xff08;IDLE的扩展&#xff0c;不仅可以写&#xff0c;还能管理、调试&am…