共用方式為


結合平台擴充功能與作業系統版本

INF 檔案的 INF 製造商區段中 ,您可以提供各種 Windows作系統版本專屬的 INF 模型 區段 。 這些版本特定的 模型 區段是使用 TargetOSVersion 裝飾來識別。

在相同的 INF 檔案中,可以針對不同版本的作系統指定不同的 INF 模型 區段 。 指定的版本表示目標作業系統版本,INF Models 區段將會使用這些版本。 如果未指定任何版本,則 Windows 會針對所有作系統的所有版本使用沒有 TargetOSVersion 裝飾的 Models 區段。

TargetOSVersion 裝飾格式

下列範例顯示 Windows XP 到 Windows 10 版本 1511 之 TargetOSVersion 裝飾的正確格式:

nt[Architecture][.[OSMajorVersion][.[OSMinorVersion][.[ProductType][.[SuiteMask]]]]]

從 Windows 10 版本 1607(組建 14310 和更新版本)開始, TargetOSVersion 裝飾的正確格式包括 BuildNumber

nt[Architecture][.[OSMajorVersion][.[OSMinorVersion][.[ProductType][.[SuiteMask]][.[BuildNumber]]]]]

每個欄位的定義如下:

nt
指定目標作系統是以 NT 為基礎。 Windows 2000 和更新版本的 Windows 都是以 NT 為基礎的。

架構
識別硬體平臺。 如需了解有關 模型 一節的架構平臺設置的更多資訊,請參閱 為多個平臺和作業系統建立 INF 檔案

OSMajorVersion
作業系統主要版本號碼的一個數字。 如需列出 Windows作系統主要版本的數據表,請參閱 INF 製造商中的 OSMajorVersion 一節。

OSMinorVersion
數位,表示作系統的次要版本號碼。 列出 Windows 作業系統次要版本的列表,請參閱 INF 製造商中的 OSMinorVersion 一節。

產品類型
數字,表示在 Winnt.h 中定義的 VER_NT_xxxx 旗標之一,例如如下:

0x0000001 (VER_NT_WORKSTATION)

0x0000002 (VER_NT_DOMAIN_CONTROLLER)

0x0000003 (VER_NT_SERVER)

如果指定了產品類型,則只有在作系統符合指定的產品類型時,才會使用 INF 檔案。 如果 INF 檔案對於單一作業系統版本支援多種產品類型,則需要多個 TargetOSVersion 項目。

SuiteMask
數位,表示 Winnt.h 中定義的一或多個 VER_SUITE_xxxx 旗標的組合。 這些旗標包括下列各項:

0x00000001 (VER_SUITE_SMALLBUSINESS)

0x00000002 (VER_SUITE_ENTERPRISE)

0x00000004 (VER_SUITE_BACKOFFICE)

0x00000008 (VER_SUITE_COMMUNICATIONS)

0x00000010 (VER_SUITE_TERMINAL)

0x00000020 (VER_SUITE_SMALLBUSINESS_RESTRICTED)

0x00000040 (VER_SUITE_EMBEDDEDNT)

0x00000080 (VER_SUITE_DATACENTER)

0x00000100(VER_SUITE_SINGLEUSERTS)

0x00000200 (VER_SUITE_PERSONAL)

0x00000400 (VER_SUITE_SERVERAPPLIANCE)

如果指定了一或多個套件遮罩值,則只有在作系統符合所有指定的產品套件時,才會使用 INF 檔案。 如果 INF 檔案支援單一作業系統版本的多個產品套件組合,則需要多個 TargetOSVersion 項目。

BuildNumber
指定從組建 14310 或更新版本開始,套用區段的 Windows 10 版本的最低 OS 組建編號。 如需列出 Windows作系統組建編號的數據表,請參閱 INF Manufacturer 中的 BuildNumber 一節。

組建編號假設僅相對於某些特定的OS主要/次要版本,而且可能會針對某些未來的OS主要/次要版本重設。

只有在 TargetOSVersion 主要 /次要版本的 OS 與目前的 OS (或 AltPlatformInfo) 版本完全相符時,才會評估 TargetOSVersion 裝飾所指定的任何組建編號。  如果目前的OS版本大於 TargetOSVersion 裝飾所指定的OS版本(OSMajorVersion,OSMinorVersion),則不論指定的組建編號為何,區段都會被視為適用。 同樣地,如果目前的OS版本小於 TargetOSVersion 裝飾所指定的 OS 版本,則區段不適用。

如果提供組建編號,則 TargetOSVersion 裝飾的 OS 版本和 BuildNumber 必須都大於第一次引進此裝飾的 Windows 10 組建 14310 的作業系統版本和組建編號。 較早版本的操作系統在未進行這些變更的情況下(例如,Windows 10 組建 10240)將不會分析未知的修飾符,因此任何試圖針對這些早期版本的嘗試事實上會導致該操作系統完全不視修飾符為有效。

Windows 如何處理 TargetOSVersion 標記

當您在裝置上安裝驅動程式套件時,Windows 會遵循下列步驟來處理 INF 檔案內的 INF 模型 區段

  1. 如果一或多個 INF 模型 區段 具有 TargetOS 裝飾,Windows 會選取最接近主機作系統屬性的 INF 模型 區段。

    例如,如果 INF Models 區段具有 TargetOSntx86.5.1 的裝飾,則如果主機操作系統是在 x86 型系統上執行 Windows XP 或更新版本的 Windows,Windows 會選取該區段。

    同樣地,如果 INF Models 區段具有 TargetOS 標示 nt.6.0,則當主機操作系統是 Windows Vista 或更新版本的 Windows 時,Windows 會在任何支援的硬體平台上選取該區段。

    如果 INF Models 區段具有 TargetOS 裝飾 nt.10.0...14393,當主機作業系統在任何支援的硬體平台上執行 Windows 10 且版本號為 14393 或更高時,Windows 會選取該區段。

  2. 如果INF 模型區段都沒有符合主機作業系統的TargetOS裝飾,Windows 會選擇具有相符平臺延伸或沒有平臺延伸的模型區段。

    例如,如果 INF Models 區段具有 ntx86 的平台擴充,並且主機作業系統是 Microsoft Windows 2000 或更新版本的 Windows 且基於 x86 的系統,則 Windows 會選擇該區段。

  3. 如果 Windows 找不到相符 的 INF 模型 區段,它將不會在裝置上安裝該驅動程式套件。

TargetOsVersion 標記的解析方式

判斷適用的 INF 模型 區段時,評估會在 INF 製造商區段內執行,其中,針對指定的 OS 版本,每一行最多可以有一個適用的區段。

下列 INF 摘錄顯示範例,其中 [ExampleModelsSection_1.NTamd64.10.0...17134] 將會在等於或大於 17134 的 Windows 組建編號上選取 ,而且 [ ExampleModelsSection_1.NTamd64.10.0...17134] 和 [ExampleModelsSection_2.NTamd64.10.0...22000] 將在等於或大於 22000 的 Windows 組建編號上選取。

[Manufacturer]
%ManufacturerName% = ExampleModelsSection_1,NTamd64.10.0...17134
%ManufacturerName% = ExampleModelsSection_2,NTamd64.10.0...22000

下列 INF 摘錄顯示範例,其中 [ExampleModelsSection_1.NTamd64.10.0...17134] 將會選取等於或大於 17134 的 Windows 組建編號,以及 [ExampleModelsSection_1.NTamd64.10.0...22000] 將在等於或大於 22000 的 Windows 組建編號上選取。

[Manufacturer]
%ManufacturerName% = ExampleModelsSection_1,NTamd64.10.0...17134,NTamd64.10.0...22000

範例 INF 模型區段,含有TargetOSVersion裝飾

套用至特定 OS 版本及之後的版本

此 INF 摘錄顯示如何指定驅動程式套件僅適用於特定 OS 版本和更新版本。

[Manufacturer]
%ManufacturerName% = ExampleModelsSection,NTamd64.10.0...17134

; This driver package applies to Windows 10 1803 (build 17134) and later only

[ExampleModelsSection.NTamd64.10.0...17134]
%DeviceDesc%=ExampleInstallSection,ExampleHardwareId

[ExampleInstallSection]
...

僅套用至單一 OS 版本

此 INF 摘錄顯示如何指定驅動程式套件僅適用於單一 OS 版本。

[Manufacturer]
%ManufacturerName% = ExampleModelsSection,NTamd64.10.0...17134,NTamd64.10.0...17763

; This driver package applies to Windows 10 1803 (build 17134)

[ExampleModelsSection.NTamd64.10.0...17134]
%DeviceDesc%=ExampleInstallSection,ExampleHardwareId

; However, this driver package does nothing on Windows 10 1809 (build 17763) and later
[ExampleModelsSection.NTamd64.10.0...17763]
; intentionally left empty

[ExampleInstallSection]
...

套用至具有不同設定的多個OS版本

此 INF 摘錄說明如何指定驅動程式套件應該針對不同的 OS 版本執行不同的安裝指示。

[Manufacturer]
%ManufacturerName% = ExampleModelsSection,NTamd64.6.1,NTamd64.10.0

; This driver package applies to Windows 7 and later

[ExampleModelsSection.NTamd64.6.1]
%DeviceDesc%=ExampleInstallSection_Win7,ExampleHardwareId

; However, this driver package has different installation instructions on Windows 10 and later

[ExampleModelsSection.NTamd64.10.0]
%DeviceDesc%=ExampleInstallSection_Win10,ExampleHardwareId

[ExampleInstallSection_Win7]
...

[ExampleInstallSection_Win10]
...