Windows 驅動程式套件 (WDK) 會利用 MSBuild 平臺工具組功能來提供驅動程式開發特有的工具和程式庫。 MSBuild 平臺工具集功能是可延伸的。 您想要使用的平臺工具組特定版本是由稱為 PlatformToolset 的 MSBuild 屬性所控制。 專案可以在工具和程式庫之間切換,方法是在專案檔中設定 PlatformToolset 屬性。
Windows 驅動程式套件 (WDK) 8.1 提供下列平台工具組,用於驅動程式開發。
| PlatformToolset (WDK 8.1) | 使用 |
|---|---|
| Windows核心模式驅動程式8.1 | 適用於核心模式驅動程式和元件。 |
| Windows使用者模式驅動程式8.1 | 適用於使用者模式驅動程式和元件。 |
| WindowsApplicationForDrivers8.1 | 適用於任何類型的應用。 此平臺工具集提供與 Windows 7 (WDK 7.1) 的 Windows 驅動程式套件 (WDK) 中使用的組建選項的相容性,而且也會使用與驅動程式互動之使用者模式應用程式開發常用的預設設定。 如果您要移轉或轉換使用 WDK 7 建置的專案,則可以使用此設定。 |
| Visual Studio 2013 (v120) | 用於任何類型的 Windows 應用程式 (預設)。 |
Windows 驅動程式套件 (WDK) 8 提供下列平台工具組來進行驅動程式開發。 此資訊僅供參考。
| PlatformToolset (WDK 8) | 使用 |
|---|---|
| Windows核心模式驅動程式8.0 | 適用於核心模式驅動程式和元件。 |
| Windows使用者模式驅動程式8.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 。 這些平臺工具集的設計目的是要使用其他 WDK 特定的建置工具來擴充現有的 Visual Studio C\C++ 工具鏈結編譯器和連結器,並以 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 屬性是 Visual Studio 2013 (v120), 適用於新建立的 Win32 使用者模式 C++ 專案,以及已轉換成 Visual Studio 2013 的專案。 在這兩種情況下, PlatformToolset 屬性都不會寫入專案檔。
當您選取其中一個驅動程式的平臺工具集時,會設定下列屬性。
- ExecutablePath 和 NativeExecutablePath (PATH)
- IncludePath (包含)
- 參照路徑 (LIBPATH)
- 程式庫路徑 (LIB)
- SourcePath
- ExcludedPath
注意 當 UseEnv 未設定為 TRUE 時,平台工具集中的對應屬性值會被用來設定 PATH、LIB、INCLUDE、LIBPATH。 當 UseEnv 設定為 TRUE 時,就像在舊建置系統中一樣,將會改用 PATH、INCLUDE、LIB 和 LIBPATH 的環境變數中的值。
WDK 安裝啟用驅動程式特定平臺工具組的檔案的位置
下表摘要說明 WDK 安裝檔案的位置,以啟用驅動程式開發的平臺工具組。
| 路徑變數 | 說明 |
|---|---|
$(VCTargetsPath) |
根據預設,$(VCTargetsPath)會在登錄中定義為 $(MSBuildExtensionsPath)<em><FOLDER><MSBUILDSYNTAXVERSION>) 如果相同的平臺使用新的組建程式,則會包含版本號碼,該平臺具有新的語法,而且需要較新的 MSBuild。 資料夾>是<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.<Platform>.WindowsKernelModeDriver8.1.props 和 Microsoft.Cpp.<Platform>.WindowsUserModeDriver8.1.props,以匯入數個 WDK 特定的 props 檔案。 |
$(VCTargetsPath)\Platforms$(Platform)\PlatformToolsets$(PlatformToolset)</p> |
針對 WDK: $(PlatformToolset) 必須設定為 WindowsKernelModeDriver8.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 |
Platform Toolset Props 檔案 匯入 props 檔案以建立驅動程式。 也導入 v120 props 文件。 |
Microsoft.Cpp.$(Platform).$(PlatformToolset).targets |
平台工具集目標檔案 匯入目標檔案以建置驅動程式。 這些檔案包含 <UsingTask> 標籤,以提取 WDK 工作。 此功能也會匯入 v120 目標。 |
$(WDKContentRoot)\build.props |
所有驅動程式特定的屬性檔案。 這些檔案包含建置驅動程式的預設設定。 |
$(WDKContentRoot)\build*.targets |
所有驅動程式特定目標檔案。 此檔案會識別建置驅動程式的目標。 |