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

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

引言

对于 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 版本 1903 Visual Studio Community 2019Visual Studio Professional 2019Visual Studio Enterprise 2019
Windows 10 版本 1809、Windows 10 版本 1803、Windows 10 版本 1709 Visual Studio Community 2017Visual Studio Professional 2017Visual Studio Enterprise 2017
Windows 10 版本 1703、Windows 10 版本 1607 Visual Studio Express 2015 桌面版Visual Studio Community 2015Visual Studio Professional 2015Visual Studio Enterprise 2015
Windows 8.1 更新、Windows 8.1 Visual Studio 2013
Windows 8 Visual Studio Professional 2012Visual 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 版本 21H2 Windows 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 7 WDK 7.1.0
Windows 8 WDK 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

相关文章
|
3月前
|
存储 安全 开发工具
windows开发环境备份,再也不怕重装系统了
【9月更文挑战第2天】在Windows系统中备份开发环境可大幅提升重装系统后的效率。本文详细介绍五个关键步骤:备份开发工具及软件包;保存配置文件;备份数据库与数据文件;确保代码仓库的安全;记录安装步骤与注意事项。遵循这些建议,重装系统时可迅速恢复开发环境,避免重复劳动。
|
4月前
|
Windows
Windows 映射网络驱动器及删除-此网格连接不存在
Windows 映射网络驱动器及删除-此网格连接不存在
462 0
|
4月前
|
移动开发 JavaScript Java
windows7下安装配置phonegap3.0 (cordavo)开发环境 (涉及android sdk配置)
windows7下安装配置phonegap3.0 (cordavo)开发环境 (涉及android sdk配置)
|
5月前
|
安全 测试技术 Windows
LabVIEW版本、硬件驱动和Windows版本之间兼容性
LabVIEW版本、硬件驱动和Windows版本之间兼容性
124 2
|
6月前
|
Dart 测试技术 开发工具
Dart开发环境搭建-Windows
Dart开发环境搭建-Windows
146 7
|
6月前
|
网络安全 C++ Windows
【Windows驱动开发】(主机)VS2017+(虚拟机)win10系统------双机调试
【Windows驱动开发】(主机)VS2017+(虚拟机)win10系统------双机调试
|
6月前
|
Windows
【Windows驱动开发】注册表的基本操作(创建、打开、修改、读取、枚举)(附源码)
【Windows驱动开发】注册表的基本操作(创建、打开、修改、读取、枚举)(附源码)
|
6月前
|
Windows
【Windows内核驱动函数(1)】IoCreateSymbolicLink()-----创建符号链接函数
【Windows内核驱动函数(1)】IoCreateSymbolicLink()-----创建符号链接函数
|
6月前
|
Dart 开发工具 Android开发
在 Windows 操作系统上安装和配置 Flutter 开发环境
在 Windows 操作系统上安装和配置 Flutter 开发环境
174 0
|
7月前
|
Linux 编译器 C语言
FFmpeg开发笔记(二)搭建Windows系统的开发环境
在Windows上学习FFmpeg通常较困难,但通过安装预编译的FFmpeg开发包可以简化流程。首先需要安装MSYS2来模拟Linux环境。下载并执行MSYS2安装包,然后修改msys2_shell.cmd以继承Windows的Path变量。使用pacman安装必要的编译工具。接着,下载预编译的FFmpeg Windows包,解压并配置系统Path。最后,在MSYS2环境中运行`ffmpeg -version`确认安装成功。欲深入学习FFmpeg开发,推荐阅读《FFmpeg开发实战:从零基础到短视频上线》。
115 4
FFmpeg开发笔记(二)搭建Windows系统的开发环境