Windows 驱动程序工具包(WDK)利用 MSBuild 平台工具集功能来提供特定于驱动程序开发的工具和库。 MSBuild 平台工具集功能是可扩展的。 要使用的平台工具集的特定版本由名为 PlatformToolset 的 MSBuild 属性控制。 项目可以通过在项目文件中设置 PlatformToolset 属性在工具和库之间切换。
Windows 驱动程序工具包 (WDK) 8.1 提供以下平台工具集用于驱动程序开发。
| PlatformToolset (WDK 8.1) | 使用 | 
|---|---|
| WindowsKernelModeDriver8.1 | 对于内核模式驱动程序和组件。 | 
| WindowsUserModeDriver8.1 | 对于用户模式驱动程序和组件。 | 
| WindowsApplicationForDrivers8.1 | 对于任何类型的应用程序。 此平台工具集与 Windows 7(WDK 7.1)的 Windows 驱动程序工具包(WDK 7.1)中使用的生成选项兼容,还使用与驱动程序交互的用户模式应用程序开发的默认设置。 如果要迁移或转换使用 WDK 7 生成的项目,则可以使用此设置。 | 
| Visual Studio 2013 (v120) | 用于任何类型的 Windows 应用程序(默认值)。 | 
Windows 驱动程序工具包 (WDK) 8 提供了以下平台工具集用于驱动程序开发。 此信息仅供参考。
| PlatformToolset (WDK 8) | 使用 | 
|---|---|
| WindowsKernelModeDriver8.0 | 对于内核模式驱动程序和组件。 | 
| WindowsUserModeDriver8.0 | 对于用户模式驱动程序和组件。 | 
| WindowsApplicationForDrivers8.0 | 对任何类型的应用程序而言。 此平台工具集提供与适用于 Windows 7 的 WDK 中使用的生成选项(WDK 7.1)的兼容性。 如果要迁移或转换使用 WDK 7 生成的项目,则可以使用此设置。 | 
| Visual Studio 2012 (v110) | 用于任何类型的 Windows 应用程序(默认值)。 | 
注意 如果从 Visual Studio 中可用的 Windows 驱动程序模板之一创建驱动程序,则会为你设置 PlatformToolset 属性。 还可以使用 Visual Studio 中的驱动程序项目属性页选择 PlatformToolset 。 在 Visual Studio 中设置平台工具集
- 打开驱动程序项目的属性页。 在 解决方案资源管理器 中选择并按住(或右键单击)驱动程序项目,然后选择“ 属性”。
- 在驱动程序项目的属性页中,选择 “配置属性 ”,然后选择“ 常规”。
- 从下拉列表中选择项目 的平台工具集 属性。
示例 - 在 Visual Studio 项目文件中设置 PlatformToolset 属性(.vcxproj)
以下示例演示如何在项目文件中设置 PlatformToolset 属性。
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"
      Label="Configuration">
  <ConfigurationType>Driver</ConfigurationType>
  <DriverType>KMDF</DriverType>
  <PlatformToolset>WindowsKernelModeDriver8.1</PlatformToolset>
</PropertyGroup>
ConfigurationType 属性控制要生成的二进制文件的目标扩展和输出类型。 此属性的一些可能值为 Application、 DynamicLibrary、 StaticLibrary 和 Utility。
WDK 为此属性引入了一个名为 Driver 的新值,用于生成内核模式驱动程序。 如果将此属性设置为 Driver,MSBuild 将生成 .sys 作为其扩展名的驱动程序文件。 在此示例中, PlatformToolset 属性设置为 WindowsKernelModeDriver8.1 以生成内核模式驱动程序。 WindowsKernelModeDriver8.1 是唯一需要 DriverConfigurationType 的 WDK 平台工具集。 在此示例中, DriverType 设置为 KMDF。
关于驱动程序的 PlatformToolset 属性
PlatformToolset 是一组属性表、目标、工具和任务,共同扩展和修改平台,以便为该特定平台生成驱动程序或内核模式组件。 对于驱动程序和相关组件和应用程序, PlatformToolset 属性应设置为项目文件中的 WindowsKernelModeDriver8.1、 WindowsUserModeDriver8.1 或 WindowsApplicationForDrivers8.1 。 这些平台工具集旨在将现有的 Visual Studio C\C++ 工具链编译器和链接器与其他特定于 WDK 的生成工具一起扩展,并面向 WDK 标头和库。 WindowsApplicationForDrivers8.1 工具集提供与适用于 Windows 7 的 WDK(WDK 7.1)中提供的生成选项设置的兼容性,以及用于开发与驱动程序交互的用户模式应用程序的默认设置。
平台工具集具有用于生成任何驱动程序项目的默认平台级设置和目标。 对生成工具(如编译器或链接器)使用默认开关、WDK 的 INCLUDE 或 LIBRARY 路径等系统信息,以及在使用 Unicode 或 ANSI 字符串生成驱动程序项目时要设置的各种属性等功能设置。 如果要为桌面开发 Windows 应用程序,请不要使用 WindowsKernelModeDriver8.1、 WindowsUserModeDriver8.1 或 WindowsApplicationForDrivers8.1 平台工具集。 请改用 Visual Studio 2013(v120) 平台工具集。
默认情况下,PlatformToolset 属性对于新创建的 Win32 用户模式 C++ 项目以及转换为 Visual Studio 2013 的项目是 Visual Studio 2013(v120)。 在这两种情况下, PlatformToolset 属性都不会写入项目文件。
为驱动程序选择平台工具集之一时,将设置以下属性。
- ExecutablePath 和 NativeExecutablePath (PATH)
- IncludePath (INCLUDE)
- ReferencePath (LIBPATH)
- LibraryPath (LIB)
- SourcePath
- ExcludedPath
注意 如果未将 UseEnv 设置为 TRUE,则会从平台工具集中的相应属性值设置 PATH、LIB、INCLUDE、LIBPATH。 当 UseEnv 设置为 TRUE 时,与旧生成系统中一样,将改用 PATH、INCLUDE、LIB 和 LIBPATH 环境变量中的值。
WDK 安装用于启用驱动程序特定平台工具集的文件的位置
下表总结了 WDK 安装文件以启用用于驱动程序开发的平台工具集的位置。
| 路径变量 | DESCRIPTION | 
|---|---|
| $(VCTargetsPath) | 默认情况下,$(VCTargetsPath)在注册表中定义为$(MSBuildExtensionsPath)<em><FOLDER><MSBUILDSYNTAXVERSION>) 在某个新构建过程用于同一平台时,可能会产生新的语法要求,并需要更高版本的 MSBuild,因此会包括版本号以应对这种情况。 <FOLDER> 是 Microsoft.Cpp 文件夹 - $(MSBuildExtensionsPath)\Microsoft.Cpp\4.0\v120。 这称为 语法版本 ,而不是 工具版本。 它是首个支持所有必要语法的 Microsoft.Build.Engine 程序集版本。 Microsoft.Cpp 指示 Visual Studio 将查找平台的唯一文件夹。 | 
| $(VCTargetsPath)\Platforms$(Platform)\ImportAfter.props | 通常不包含文件的可选文件夹。 可以通过在此文件夹中保存 MSBuild 格式化文件用以自定义平台。 它们将根据它们当前所在的文件夹被导入到平台设置文件的末尾。 从此位置导入文件的顺序是未定义的。 MSBuild 创建的文件为 $(VCTargetsPath)\Platforms$(Platform)\ImportAfter\Microsoft.Cpp,<平台>,WindowsKernelModeDriver8.1.props 和 Microsoft.Cpp,<平台>,WindowsUserModeDriver8.1.props,导入多个特定于 WDK 的属性文件。 | 
| $(VCTargetsPath)\Platforms$(Platform)\PlatformToolsets$(PlatformToolset)</p> | 对于 WDK: $(PlatformToolset)必须设置为 WindowsKernelModeDriveeDriver8.1,用于生成内核模式驱动程序,设置为 WindowsUserModeDriver8.1 以生成用户模式驱动程序,并设置为 WindowsApplicationForDrivers8.1,以便与 Windows 7 WDK (WDK 7)中使用的生成选项兼容。 PlatformToolset 目录 例如,C:\Program Files\MSBuild\Microsoft.Cpp\v4.0\v120\Platforms\Win32\PlatformToolsets\WindowsKernelModeDriver8.1。 PlatformToolsets 目录允许稍后在自己的子文件夹中添加其他类型的文件。 | 
| Microsoft.Cpp.$(Platform)。$(PlatformToolset)。props | 平台工具集属性文件 导入配置文件以构建驱动程序。 还导入 v120 props 文件。 | 
| Microsoft.Cpp.$(Platform)。$(PlatformToolset)。targets | 平台工具集目标文件 导入目标文件以生成驱动程序。 这些文件包含 <用于引入 WDK 任务的 UsingTask> 标记。 此功能还会导入 v120 目标。 | 
| $(WDKContentRoot)\build.props | 所有特定于驱动程序的属性文件。 这些文件包含用于生成驱动程序的默认设置。 | 
| (WDKContentRoot)\build*.targets | 所有特定于驱动程序的目标文件。 此文件标识生成驱动程序的目标。 |