使用 Visual Studio 或 MSBuild 生成驱动程序

本主题提供有关如何使用 Visual Studio 开发环境生成驱动程序的说明,或者使用 Visual Studio 命令提示符窗口和 Microsoft Build 引擎(MSBuild)从命令行生成驱动程序。

要开发适用于 Windows 的驱动程序,需要在 Visual Studio 中安装 SDK 和 WDK 并配置驱动程序设置。 确保计算机上的 SDK 和 WDK 版本匹配。

使用 Visual Studio 生成驱动程序

在 Visual Studio 中生成驱动程序与生成任何项目或解决方案的方法相同。 使用驱动程序模板创建新的驱动程序项目时,该模板将定义默认(活动)项目配置和默认(活动)解决方案生成配置。

有关管理和编辑生成配置的信息,请参阅在 Visual Studio 中生成

KMDF 驱动程序设置

要在 VS 2022 中配置驱动程序设置,请右键单击驱动程序项目,选择属性,然后导航到属性->配置属性->驱动程序设置

Visual Studio KMDF 驱动程序设置。

目标 OS 版本

目标 OS 版本 是指要为其开发驱动程序的 Windows 版本。 将目标 OS 版本设置为驱动程序支持的最低版本。 例如,适用于 Windows 10 的驱动程序应支持 Windows 10 和所有更高版本。

按照这些主题中的指导,确保正确编写驱动程序包以支持多个版本的 Windows。

目标平台

Windows 目标平台有 3 种分类,分别为通用驱动程序桌面驱动程序Windows 驱动程序

  1. 通用驱动程序必须:

  2. 桌面驱动程序必须:

    符合桌面驱动程序条件的驱动程序经过 Windows 徽标认证,可添加到 Windows 更新计划中。

  3. Windows 驱动程序必须:

    • 满足所有桌面驱动程序要求。
    • 完全符合驱动程序包隔离要求。
    • 通过InfVerif /w
    • Windows 驱动程序是限制性最高的目标平台选择,满足所有可靠性和可维护性要求。

下表汇总了驱动程序分类。

功能 通用驱动程序 桌面驱动程序 Windows 驱动程序
Infverif 开关 InfVerif /u InfVerif /h InfVerif /w
当前 WHCP 要求
支持 Windows OS 的所有变体 No
SSHX64/ARM64
APIVALIDATOR 合规要求 No
桌面 OS 支持(目标 OS 版本)
GitHub 驱动程序示例支持

驱动程序配置

生成驱动程序时,请确保使用 WDK 或 EWDK 在 Visual Studio 中正确设置平台体系结构和 NT_TARGET_VERSION。 用于开发的默认解决方案生成配置是 DebugWin64

  1. 在“解决方案资源管理器”中选择并按住(或右键单击)解决方案,然后选择“配置管理器”
  2. Configuration Manager 中,选择与你感兴趣的生成类型相对应的活动解决方案配置(例如,调试发布)和活动解决方案平台(例如,Win64)。
  3. 选择并按住(或右键单击)该项目并选择属性。 导航到驱动程序 2>常规,然后设置目标 OS 版本目标平台
  4. 配置驱动程序或驱动程序包的项目属性。 你可以为部署、驱动程序签名或其他任务设置属性。 有关详细信息,请参阅配置驱动程序和驱动程序包的项目属性

生成一个驱动程序

  1. 在 Visual Studio 中,打开驱动程序项目或解决方案。
  2. 从“生成”菜单中,选择“生成解决方案”(Ctrl+Shift+B)。
  3. 在生成输出窗口中查看任何编译时错误。

使用命令行 (MSBuild) 生成驱动程序

你可以使用 Visual Studio 命令提示窗口和 Microsoft 生成引擎 (MSBuild) 从命令行生成驱动程序

如何使用“Visual Studio 命令提示”窗口生成驱动程序

  1. 打开“适用于 VS2022 的开发人员命令提示符”窗口。

    在此窗口中,你可以通过指定项目 (.vcxproj) 或解决方案 (.sln) 文件来使用 MSBuild.exe 生成任何 Visual Studio 项目。

  2. 导航到项目目录,然后为你的目标输入 MSBuild 命令。

    例如,要使用默认的平台和配置执行名为 MyDriver.vcxproj 的 Visual Studio 驱动程序项目的洁净生成,导航到项目目录并输入以下 MSBuild 命令:

    msbuild /t:clean /t:build .\MyDriver.vcxproj
    

    要指定特定的配置和平台,请使用:

    msbuild /t:clean /t:build ProjectFile /p:Configuration=<Debug|Release> /p:Platform=architecture /p:TargetPlatformVersion=a.b.c.d /p:TargetVersion=OS    
    

    以下命令为“调试”配置、“Win32”平台和 Windows 10 生成驱动程序。

    msbuild /t:clean /t:build .\MyDriver.vcxproj /p:Configuration="Debug" /p:Platform=Win32 /p:TargetVersion="Windows10" /p:TargetPlatformVersion="10.0.10010.0"
    

    TargetPlatformVersion 设置为可选,用于指定要生成的工具包版本。 默认值为最新的工具包版本。

配置驱动程序和驱动程序包的项目属性

使用属性页配置和设置驱动程序和驱动程序包的选项。 你可以选择配置驱动程序,以便在生成解决方案时令其自动签名或自动部署到远程测试计算机。

你可以为单个驱动程序或整个驱动程序包设置属性。 以下部分演示了专门为驱动程序和驱动程序包配置的一些可用属性。

驱动程序项目属性

驱动程序包属性

WDK 命令行工具项目集成

WDK 提供了大量的命令行工具,如 StampinfWPP 预处理器(WPP 跟踪),通常包含在生成过程内。 这些工具不是通过 Visual Studio 分发的。 为了将这些工具与 Visual Studio 生成环境整合,它们被包装为 MSBuild 的 WDK 任务。 如果你使用驱动程序模板之一或有已转换的现有驱动程序,你的项目可能已经存在这些属性页。 如果不是上述情况,在你将相关文件类型添加到项目或解决方案(例如,消息编译器的 .mc 或 .man 文件)时,属性页将自动添加到你的项目。 有关详细信息,请参阅 WDK 和 Visual Studio 生成环境

有关驱动程序生成的疑难解答提示

为了帮助解决生成问题,可以在 Visual Studio 中增加生成输出的详细程度:

  1. 选择工具 - >选项
  2. 选择“项目和解决方案”文件夹,然后选择“生成并运行”
  3. 更改“MSBuild 项目生成输出详细级别”和“MSBuild 项目生成日志文件详细级别”选项。 默认情况下,这些选项设置为最低

更新 Windows 8 驱动程序

可以将使用 WDK 8 或 Windows 驱动程序工具包 (WDK) 8.1 创建的项目和解决方案转换为与 Windows 驱动程序工具包 (WDK) 10 和 Visual Studio 结合使用。 在打开项目或解决方案之前,请运行 ProjectUpgradeTool。 ProjectUpgradeTool 可以转换项目和解决方案,以便使用 WDK 10 进行生成。

从 Windows 驱动程序工具包 (WDK) 8 开始,MSBuild 取代了 Windows 生成实用工具 (Build.exe)。 WDK 使用的编译器和生成工具与你用于生成 Visual Studio 项目的工具相同。 使用以前版本的 WDK 生成的驱动程序项目必须转换为在 Visual Studio 环境中工作。 可以从命令行运行转换实用工具,也可以通过从现有源创建新的 Visual Studio 项目来转换现有驱动程序。 有关详细信息,请参阅从现有源文件创建驱动程序WDK 和 Visual Studio 生成环境