在谈论 Windows 开发时,专业领域中最常出现的术语之一是 Windows 驱动程序套件 (WDK)如果您曾经好奇过 Windows 中的驱动程序是如何工作的,或者开发人员从哪里获得所有这些工具来创建强大的驱动程序,那么答案通常就在这套全面的实用程序中。虽然官方文档内容详尽,但经常使用专业术语,导致经验不足的用户难以理解。因此,今天我们将深入探讨这个主题,用通俗易懂的语言,但不失严谨的措辞,深入剖析 WDK 背后的一切。
无论您是初学者、好奇的学生,还是对 Windows 的来龙去脉感兴趣的人,本文都将解释 WDK 的用途、它的演变历程、如何安装和使用,以及它为何对 Microsoft 生态系统至关重要。我们还将探讨它如何与其他工具集成、它的兼容性(包括最近推出的原生 ARM64 支持),以及如何适应企业级和个人项目中不断变化的需求。
Windows 驱动程序工具包 (WDK) 到底是什么?
El Windows 驱动程序套件,通常称为 开发工具包,是微软提供的软件包,专门用于开发 操作系统 Windows。该套件汇集了一系列工具、API、文档、示例和构建环境,可让您创建、测试和调试操作系统所需的所有类型的驱动程序。
总结一下 任何制造商 硬件 或需要在 Windows 中正确识别、管理和使用其设备的组织,最终选择了这款套件。它是现实世界硬件和微软操作系统之间不可或缺的桥梁。
Windows 驱动程序工具包的历史和演变
WDK 的起源并不近。它的起源可以追溯到 90 世纪 XNUMX 年代 Windows 的早期,当时的驱动程序开发工具非常简陋,集成度也较低。最初,微软称之为 设备开发套件 (DDK) 在 Windows 3.x 和 Windows 9x 时代,当时的开发人员主要致力于开发 VxD 驱动程序模型,该模型服务于 Windows 95 等系统。
随着 Windows 的发展以及 Windows NT 和 Windows 98SE 等版本的出现,该套件被重新命名为 驱动程序开发套件(也称为DDK) 并开始支持称为 Windows 驱动模型 (WDM)巨大的飞跃伴随着 Windows Vista微软决定将各种套件统一在一个名称和概念下: 我们今天所知道的 WDK.
这一变化标志着一个前后的变化,因为除了让程序员的工作更轻松之外,它还将一些基本元素整合到一个框架下,例如 可安装文件系统套件(IFS 套件) 和 驾驶员测试经理 (DTM),尽管后者后来被淘汰了。
WDK 的关键组件
El WDK 不仅仅是一些随机工具的集合其结构旨在覆盖整个驱动程序开发生命周期。其最重要的元素包括:
- 官方详细文档 关于驱动程序模型、Windows API 和实际示例。
- 构建工具 自定义构建,包括与不同版本的 Visual Studio 和 Microsoft 自己的工具链兼容的编译器,以确保一致的结果。
- 测试和调试环境 它允许模拟真实情况、注入故障并分析驾驶员在负载和不利条件下的行为。
- 库和头文件 专为驱动程序开发而设计,不适用于常规应用程序。
- 代码示例 以及各种驱动程序的模板(用于图形、网络、 存储等)
此外,WDK 通常需要安装 Windows SDK中 以及其他工具,例如 Windows HLK(硬件实验室套件) 执行某些高级测试和验证。
WDK 兼容性和要求
任何开发人员最感兴趣的方面之一是 WDK 目前支持哪些版本的 Windows 和 Visual Studio?据最新消息,公开版本的 WDK 10.0.26100.3323 (2025 年 XNUMX 月)可从 Windows 7,包括客户端和服务器版本。然而,真正重要的是 允许您为 Windows 10、Windows Server 2016 及更高版本的环境编译驱动程序.
Visual Studio 2022 的某些版本已被验证为兼容,但务必始终检查每个工具组合的具体要求(例如,SDK 和 WDK 内部版本号匹配是很常见的,以避免在构建二进制文件时出现麻烦)。
另一个重要的创新是 原生支持 ARM64 处理器这意味着现在可以直接在 ARM64 硬件上开发、测试和部署驱动程序,而无需使用模拟器。此外,在这些机器上模拟 x86 驱动程序的能力仍然存在,这为新设备和 手提 基于ARM。
WDK 和 NuGet:更轻松的安装
近年来,微软选择通过以下方式分发 WDK 组件 NuGet 包这使得程序员的工作变得简单得多,因为他们现在可以直接从 nuget.org 使用 Visual Studio。截至版本 10.0.26100.1 从 WDK 中,可以使用这些包,它们也可以像 SDK 一样自动管理依赖项。 这确保了工具链始终保持最新并且完美啮合。
安装和开始使用 WDK 的典型步骤
如果您想在 Windows 上开始驱动程序开发,建议您按照以下流程设置工作环境,其中包括三个主要步骤:
- 安装 Visual Studio 2022:WDK 依赖于安装 Visual Studio,最好是 2022 版本。最好启用“使用 C++ 进行桌面开发”工作负载并添加推荐的单个组件,例如用于不同架构的库和构建工具以及最新版本的 Windows 驱动程序工具包。
- 安装 Windows SDK请务必下载与所选 WDK 内部版本号匹配的 SDK 版本,以确保一切正常运行。使用不同的配对可能会导致细微的不兼容问题。
- 下载并安装 WDK自 17.11.0 版本起,Visual Studio 安装程序允许直接添加 WDK 组件。如果不存在,系统会提示你下载并安装该组件以确保集成。
在更高级的场景中,或者当您希望自动化并更好地控制环境的各个方面时,可以选择使用 企业 WDK (EWDK).
什么是企业 WDK (EWDK)?
El 企业 Windows 驱动程序套件 它是一个替代版本,主要针对喜欢在线工作的公司和开发人员。 comandos 并且想要一个完全独立于传统 Visual Studio 安装的可移植环境。EWDK 并非采用传统的安装程序,而是以 .zip 或 .iso 文件的形式分发,您可以将其解压到任何目录并直接从那里运行,而无需在系统上安装任何程序。它包含 所有必要的编译工具、链接器、库和头文件以及特定版本的 Visual Studio 构建工具、SDK 和 WDK。它非常适合需要长期保持一致构建环境的项目,或在严格版本控制下工作的开发团队。
EWDK 假定您将在控制台中工作,因此它不包含可视化集成开发环境。但是,如果您愿意,可以使用 Visual Studio,只要两个工具的版本匹配即可避免冲突。
配置并启动 EWDK
使用 企业 WDK 这很简单:
- 从微软官方网站下载EWDK。
- 将内容解压缩到您选择的目录中,例如 D:\ewdk.
- 以管理员身份打开命令控制台,导航到创建的文件夹并运行 启动构建环境这会自动配置所有必要的路线和变量。
- 从那里,您可以使用 MSBuild 命令构建您的项目,就像在经典环境中一样。
版本管理:一个基本细节
El 版本控制 在驱动程序领域,这一点尤其重要。每个 WDK 和 SDK 安装都与一个特定的版本号相关联,有时还会有一个称为 QFE (快速修复工程),指的是对基础套件进行快速修复或添加。为了确保一切正常运转, 已安装 SDK 的内部版本号必须与 WDK 的内部版本号匹配如果不匹配,构建可能会失败,或者更糟的是,创建不兼容的驱动程序或具有细微错误的驱动程序。
检查这些信息并不复杂:只需转到 Windows 应用程序设置并搜索已安装的套件;完整的构建链就会出现在那里。 值得注意的是,除了特殊情况外,QFE 值并不总是必须匹配,除非驱动程序在后续的 QFE 中使用了附加功能。
ARM64 上的驱动程序开发:新机遇
WDK 最新版本的一大进步是 全面支持 ARM64。今天,您可以:
- 在 ARM64 硬件上原生运行 WDK/EWDK。
- 如果有必要,继续在 ARM 机器上模拟 x86 驱动程序。
- 从 x64 或 ARM64 机器到 ARM64 设备执行远程调试和驱动程序部署。
- 自动安装所有依赖项和构建工具,确保在这些环境中正常运行。
在现代 Windows 版本上签名和安装驱动程序
今天 Windows 8 及更高版本对驱动程序的数字签名有非常严格的要求。Microsoft 要求对驱动程序进行数字签名,并附带从驱动程序的 INF 文件生成的目录 (.cat) 文件。Microsoft requirements that drivers be digitallysigned and accompanied by a catalog (.cat) file generated from the driver's INF file. 实现此目的的常规过程如下:The general process for achieving this is:
- 使用 Inf2Cat 实用程序(包含在 WDK 中)生成 .cat 文件。
- 获取或创建有效的数字证书,最好由公认的证书颁发机构 (CA) 颁发。
- 使用 SignTool(也包含在 WDK 中)对 .cat 文件进行签名。
- 在目标机器上安装公共证书,以便 Windows 可以验证驱动程序并允许其安装。
对于要在 Windows 8、Windows 10 或 11 中安装的任何自定义驱动程序,此过程都是必需的(尽管在 Windows 7 中仍然可以使用未签名的驱动程序,但不再推荐或安全执行此操作)。此外,此过程有助于确保系统上安装的驱动程序的完整性和可信度。
实际示例和用例
El WDK 包含一系列可立即使用的示例项目范围广泛,从非常简单的“Hello World”驱动程序,到图形硬件、存储、网络设备、HID 等更复杂的用例。这些示例为开发人员奠定了坚实的基础,并使他们能够根据所需控制硬件的具体需求定制代码。
这些资源对于想要更好地了解如何实现特定功能和执行实际调试测试的初学者特别有用。
与测试和部署工具集成
除了开发和编译功能外,WDK 还配备了其他 Microsoft 验证和认证工具包,例如 Windows HLK (硬件实验室套件)。该工具允许在真实或虚拟硬件上进行自动测试,并生成有助于驱动程序认证的报告,确保它们符合 Microsoft 要求,并通过以下方式促进其正式分发: Windows更新 和其他平台。
这些测试对于制造商证明其驱动程序符合质量和安全标准至关重要,有助于其在专业和最终用户环境中的部署。
当前 WDK 的优势
WDK 现代版本的主要优点是:
- 经常更新 与每个新版本的 Windows 保持一致。
- 与 Visual Studio 更好地集成 和其他开发环境。
- 自动化 在流程和依赖性方面,简化了工作。
- 调试和测试工具 坚固耐用,保证质量和 可靠性.
- ARM64 的开发能力,在当今市场上的需求越来越大。
工作团队和公司的其他注意事项
对于管理团队的人来说,使用 嵌入式工作环境 移动压缩或版本控制环境的能力对于保持大型项目的一致性以及确保开发和测试环境中的可重复性至关重要。
通过不依赖传统安装,可以在几分钟内快速部署环境,这对于优先考虑自动化和高效资源管理的公司或项目来说是一个显著的优势。
常见问题和挑战
使用 WDK 时,主要挑战之一是 WDK、SDK 和 Visual Studio 版本完全匹配如果出现不同步,可能会出现难以诊断的错误。此外,数字签名策略和 Windows 安全策略对于不熟悉的人来说可能比较复杂。在进行最终部署之前,最好花时间了解签名流程并在受控环境中进行测试。
经常检查 官方文档和兼容性说明 当新版本的操作系统发布时,微软会发布通知,因为要求或政策的变化可能会影响驱动程序的开发、签名和部署过程。
这些方面确保驱动程序在现代系统中正常运行并保持安全。
所有配置文件的概述和实用性
无论您是自由程序员、开发自己的硬件的小型企业还是大型公司: WDK 现在是并且将继续是需要硬件和 Windows 之间高级交互的项目的关键工具。它提供从图形环境到命令行选项的所有内容,包括最新的示例、技术支持和活跃的社区,使学习和回答问题变得容易。
此外,对 NuGet 的承诺和对 ARM64 的支持确保 WDK 将保持相关性,适应未来版本的 Windows 和市场需求。
投资学习如何使用 Windows 驱动程序套件 这是在 Windows 开发中最复杂、最有价值的学科之一中保持领先地位的可靠方法。掌握它能够在性能、稳定性和专业性方面带来优势,巩固其作为 Microsoft 生态系统高质量驱动程序创建标准的地位。
对字节世界和一般技术充满热情的作家。我喜欢通过写作分享我的知识,这就是我在这个博客中要做的,向您展示有关小工具、软件、硬件、技术趋势等的所有最有趣的事情。我的目标是帮助您以简单而有趣的方式畅游数字世界。