共用方式為


INF Manufacturer 區段

[製造商] 區段會識別可使用 INF 檔案安裝的一或多個裝置製造商。

[Manufacturer]

manufacturer-identifier
[manufacturer-identifier] 
[manufacturer-identifier] 
...

項目

manufacturer-identifier
唯一識別製造商和 INF 區段,其中包含識別製造商裝置型號的資訊。 每個 製造商識別碼 項目都必須存在於個別行,並使用下列格式:

manufacturer-name |
%strkey%=models-section-name |
%strkey%=models-section-name [,TargetOSVersion] [,TargetOSVersion] ...  (Windows XP and later versions of Windows)

這些項目定義如下:

manufacturer-name
識別裝置的製造商。 INF 也必須包含相同名稱的對應 INF 模型 區段 。 製造商名稱的最大長度,以字元為單位,是LINE_LEN。 (無法本地化以這種方式指定的專案。

strkey
指定代表製造商名稱之 INF 檔案內的唯一令牌。 每個這類 %strkey% 令牌都必須定義在 INF 檔案的 INF 字串區段中

models-section-name
指定 INF 檔案中個別製造商 INF 模型區段的 INF 寫入器定義名稱。 此值在 INF 檔案中必須是唯一的,而且必須遵循定義區段名稱的一般規則。 如需這些規則的詳細資訊,請參閱 INF 檔案的一般語法規則。

TargetOSVersion
指定可以使用各種 INF 模型 區段的一或多個目標作業系統版本。 Windows 選擇最符合其執行作業系統版本的 INF 模型 區段。

如需 TargetOSVersion 裝飾的描述,請參閱下列節,以及下方範例 3 中的相關信息。

重要

從 Windows Server 2003 SP1 開始,INF 檔案必須針對非 x86 目標操作系統版本裝飾 INF 製造商區段中的 models-section-name 專案,以及相關聯的 INF Models 區段名稱。 x86 型目標操作系統版本的 INF 檔案中不需要這些平臺延伸模組,但建議使用。

備註

任何安裝一或多個裝置的 INF 檔案都必須具有 [製造商] 區段。 IHV/OEM 提供的 INF 檔案通常只會指定本節中的單一專案。 如果指定多個專案,每個專案都必須位於 INF 的個別行上。

使用 %strkey%=models-section-name 專案可簡化國際市場 INF 檔案的當地語系化,如建立國際 INF 檔案和 INF 字串一節參考頁面中所述。

如果 INF 檔案以製造商名稱格式指定一或多個專案,則每個這類專案都會隱含地指定 INF 中其他地方對應 Models 區段的名稱。

您可以將每個系統提供的 INF 檔案 的 Manufacturer 區段視為目錄,因為本節會設定每個製造商裝置型號的 裝置安裝類別。 INF 檔案 的 [製造商 ] 區段中的每個專案都會針對製造商的名稱指定容易本地化的 %strkey% 令牌,以及唯一到 INF 每一製造商 型號 區段名稱。

[製造商] 區段中的 models-section-name 專案可以裝飾,以指定目標操作系統版本。 您可以為不同版本的作業系統指定不同的 INF 模型 區段 。 指定的版本表示使用 INF 模型 區段的作業系統版本。 如果未指定任何版本,Windows 會針對所有作業系統的所有版本使用指定的 Models 區段。

針對 Windows XP 到 Windows 10 版本 1511,TargetOSVersion 裝飾的格式如下所示:

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

從 Windows 10 版本 1607 (組建 14310 和更新版本)開始,TargetOSVersion 裝飾的格式如下所示:

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

每個欄位的定義如下:

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

架構
識別硬體平臺。 如果指定,這必須是 x86、ia64、amd64arm 或 arm64。

在 Windows Server 2003 SP1 之前,如果未 指定架構 ,相關聯的 INF 模型 區段可以搭配任何硬體平臺使用。

從 Windows Server 2003 SP1 開始,必須在非 x86 目標作業系統版本的 INF 模型區段名稱中指定架構。 架構在 x86 型目標操作系統版本的 INF 模型 區段名稱中是選擇性的,但建議使用。

OSMajorVersion
代表操作系統主要版本號碼的數位。 下表定義 Windows 作業系統的主要版本。

注意

若要區分 INF 檔案中的特定 Windows 10 和 11 版本,您必須使用 BuildNumber (請參閱下方)。

Windows 版本 主要版本
Windows 11 (所有版本) 10
Windows Server 2022 10
Windows Server 2019 10
Windows Server 2016 10
Windows 10 (所有版本) 10
Windows Server 2012 R2 6
Windows 8.1 6
Windows Server 2012 6
Windows 8 6
Windows Server 2008 R2 6
Windows 7 6
Windows Server 2008 6
Windows Vista 6
Windows Server 2003 R2 5
Windows Server 2003 5
Windows XP 5
Windows 2000 5

OSMinorVersion
數位,表示操作系統的次要版本號碼。 下表定義 Windows 作業系統的次要版本。

Windows 版本 次要版本
Windows 11 (所有版本) 0
Windows Server 2022 0
Windows Server 2019 0
Windows Server 2016 0
Windows 10 (所有版本) 0
Windows Server 2012 R2 3
Windows 8.1 3
Windows Server 2012 2
Windows 8 2
Windows Server 2008 R2 1
Windows 7 1
Windows Server 2008 0
Windows Vista 0
Windows Server 2003 R2 2
Windows Server 2003 2
Windows XP 1
Windows 2000 0

ProductType
數位,表示 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 版本最小 OS 組建編號。

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

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

如果提供組建編號,則 TargetOSVersion 裝飾的 OS 版本和 BuildNumber 必須大於操作系統版本,以及第一次引進此裝飾的 Windows 10 組建 14310 組建組建編號。 沒有這些變更的舊版操作系統(例如,Windows 10 組建 10240)將不會剖析未知的裝飾,因此嘗試以這些舊版組建為目標實際上會防止 OS 考慮裝飾是否有效。

下表定義 Windows 作業系統的組建編號。

Windows 版本 建立編號
Windows 11 版本 23H2 22631
Windows 11 版本 22H2 22621
Windows 11 版本 21H2 22000
Windows Server 2022 20348
Windows 10 版本 22H2 19045
Windows 10 版本 21H2 19044
Windows 10 版本 21H1 19043
Windows 10 版本 20H2 19042
Windows 10 版本 2004 19041
Windows 10 版本 1909 18363
Windows 10 版本 1903 18362
Windows Server 2019 17763
Windows 10 1809 版 17763
Windows 10 1803 版 17134
Windows 10 版本 1709 16299
Windows 10 版本 1703 15063
Windows Server 2016 14393
Windows 10 1607 版 14393

如需 TargetOSVersion 裝飾的詳細資訊,請參閱結合平臺延伸模組與操作系統版本

重要

強烈建議您一律使用 Windows XP 或更新版本的 Windows 操作系統的平臺擴充功能,裝飾製造商型號區段中的 models-section-name 專案。 針對以 x86 為基礎的硬體平臺,您應該避免使用 。NT 平臺延伸模組並使用 。請改用 NTx86

如果您的 INF 包含具有裝飾的製造商區段專案,它也必須包含符合操作系統裝飾名稱的 INF 模型區段。 例如,如果 INF 包含下列 Manufacturer 區段:

%FooCorp%=FooMfg,NTx86....0x80,NTamd64

然後 INF 也必須包含 具有下列名稱的 INF 模型 區段

  • [FooMfg.NTx86....0x80]

    此名稱適用於 x86 型硬體平臺上的 Windows XP 和更新版本的 Windows 資料中心套件。

  • [FooMfg.NTamd64]

    此名稱適用於 x64 型硬體平臺上所有 Windows XP 和更新版本的 Windows 產品類型和套件。

在安裝期間,Windows 會以下列方式選取 INF 模型 區段

  1. 如果 Windows 是以 x86 為基礎的作業系統版本(Windows XP 或更新版本)中執行,其中包含資料中心產品套件,Windows 會 選取 [FooMfg.NTx86...]。0x80] Models 區 段。

  2. 如果 Windows 在任何產品套件的 x64 型作業系統版本 (Windows XP 或更新版本) 中執行,Windows 會選取 [FooMfg.NTamd64] Models 區段。

如果 INF 是要與 Windows XP 之前的作業系統版本搭配使用,它也必須包含名為 [FooMfg]未編碼 Models 區段。

如果 INF 支援多個製造商,則必須針對每個製造商遵循這些規則。

以下是 TargetOSVersion 裝飾的其他範例

  • %FooCorp% = FooMfg,NTx86

    在此範例中,產生的 INF Models 區段名稱為 [FooMfg.NTx86],適用於任何 x86 版本的作業系統(Windows XP 或更新版本)。

  • %FooCorp% = FooMfg, NT.7.8

    在此範例中,針對操作系統 7.8 版和更新版本,產生的 INF Models 區段名稱為 [FooMfg.NT.7.8]。 若是舊版的操作系統,例如 Windows XP,則會使用 [FooMfg.NT]。

安裝程式要使用的 INF 模型 區段選取專案是以下列規則為基礎:

  • 如果 INF 包含 數個主要或次要操作系統版本號碼的 INF 模型 區段 ,Windows 會使用版本號碼高於安裝所在操作系統版本的最高版本號碼區段。

  • 如果符合操作系統版本的 INF 模型 區段也包含產品類型和/或產品套件裝飾,Windows 會選取最符合執行中操作系統的區段。

例如,假設 Windows 在 Windows XP(5.1 版)上執行,而沒有數據中心產品套件,它會在 Manufacturer 區段中找到下列專案:

%FooCorp%=FooMfg,NT,NT.5,NT.5.5,NT....0x80

在此情況下,Windows 會尋找名為 [FooMfg.NT.5]INF 模型區段。 如果 Windows XP 在資料中心版本的 Windows XP 上執行,Windows 也會使用 [FooMfg.NT.5] 區段,因為特定版本號碼的優先順序高於產品類型和套件遮罩。

如果您想要讓 INF 明確排除特定的作業系統版本、產品類型或套件,請建立空 的 INF 模型 區段。 例如,名為 [FooMfg.NTx86.6.0] 的空白區段禁止在 x86 型作業系統 6.0 版和更新版本上安裝。

範例

此範例示範 單一 IHV 的 INF 一般製造商 區段。

[Manufacturer]
%Mfg%=Contoso,NTamd64        ; Models section == Contoso

[Contoso.NTamd64]

; ...
[Strings]
Mfg = "Contoso, Ltd."

下一個 範例顯示裝置類別特定安裝程式的 INF 一般製造商 區段的一部分:

[Manufacturer]
%CONTOSO%=Contoso_Section,NTamd64
; several entries omitted here for brevity
%FABRIKAM%=Fabrikam_Section,NTamd64
%ADATUM%=Adatum_Section,NTamd64

下列範例顯示 x86 平臺、Windows XP 和更新版本專屬的 Manufacturer 區段:

[Manufacturer]
%foo%=foosec,NTx86.5.1

[foosec.NTx86.5.1]

下列範例顯示 x64 平臺、Windows 10 組建 14393 和更新版本專屬的 Manufacturer 區段:

[Manufacturer]
%foo%=foosec,NTamd64.10.0...14393

[foosec.NTamd64.10.0...14393]

下列兩個範例顯示具有各種 OS 特定 INF 模型區段的基本架構 INF 檔案:

範例 1:

[Manufacturer]
%MyName% = MyName,NTx86.5.1
.
[MyName]
%MyDev% = InstallA,hwid
.
[MyName.NTx86.5.1]
%MyDev% = InstallB,hwid
.
[InstallA]   ; Windows 2000 
.
.
[InstallB]   ; Windows XP and later, x86 only
.

範例 2:

[Manufacturer]
%MyName% = MyName,NTx86.6.0,NTx86.5.1,
.
[MyName.NTx86.6.0] ; Empty section, so this INF does not support
.                  ; NT 6.0 and later.
.
[MyName.NTx86.5.1] ; Used for NT 5.1 and later
.                  ; (but not NT 6.0 and later due to the NTx86.6.0 entry)
%MyDev% = InstallB,hwid
.
[MyName]           ; Empty section, so this INF does not support
.                  ; Win2000
.

範例 3:

[Manufacturer]
%MyMfg% = MyMfg, NTamd64.6.1, NTamd64.10.0, NTamd64.10.0...14310
.
[MyMfg.NTamd64.6.1]          ; Used for Windows 7 and later
.                            ; (but not for Windows 10 and later due to the NT.10.0 entry)
.
[MyMfg.NTamd64.10.0]         ; Used for Windows 10
.                            ; (but not for Windows 10 build 14393 and later due to the NT.10.0...14393 entry)
.
[MyMfg.NTamd64.10.0...14393] ; Used for Windows 10 build 14393 and later
.
.

注意

指定多個 TargetOSVersions 時,請將它們串在一個專案中,如本範例所示。 請勿將每個目標表示為個別專案。

另請參閱

結合平臺延伸模組與操作系統版本

模型

字串