INF 制造商部分

制造商 ”部分标识可以使用 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 文件中的唯一令牌。 必须在 INF 文件的 INF 字符串节定义每个此类 %strkey% 标记。

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 模型节名称。 对于基于 x86 的目标操作系统版本,INF 文件中不需要这些平台扩展,但建议这样做。

注解

安装一个或多个设备的 INF 文件必须具有“制造商部分。 IHV/OEM 提供的 INF 文件通常只指定本部分中的单个条目。 如果指定了多个条目,则每个条目必须位于 INF 的单独行上。

使用 %strkey%=models-section-name 条目简化了国际市场 INF 文件的本地化,如创建国际 INF 文件和 INF 字符串部分参考页中所述。

如果 INF 文件以制造商名称格式指定一个或多个条目,则每个此类条目都隐式指定 INF 中其他位置的相应 Models 节的名称。

可以将每个系统提供的 INF 文件的“制造商”部分视为目录,因为本部分为设备设置类的每个制造商设备型号的安装。 INF 文件的“制造商”部分中的每个条目都指定制造商名称的易于本地化的 %strkey% 标记,以及唯一到 INF 每制造商的 Models 节名称。

“制造商”部分中的 models-section-name 条目可以修饰以指定目标操作系统版本。 可以为不同版本的操作系统指定不同的 INF 模型部分 指定的版本指示使用 INF 模型 部分的操作系统版本。 如果未指定任何版本,Windows 为所有操作系统版本使用指定的 “模型 ”部分。

对于 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 的。

体系结构
标识硬件平台。 如果指定,则必须为 x86ia64、amd64armarm64

在 Windows Server 2003 SP1 之前,如果未 指定体系结构 ,则关联的 INF 模型 部分可用于任何硬件平台。

从 Windows Server 2003 SP1 开始,必须在 INF 模型部分名称中为非 x86 目标操作系统版本指定体系结构。 体系结构在基于 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(或 AltPlatformInfo)版本完全匹配时,才会计算 TargetOSVersion 修饰指定的任何内部版本号。  如果当前 OS 版本大于 TargetOSVersion 修饰 (OSMajorVersion,OSMinorVersion)指定的 OS 版本,则无论指定的内部版本号如何,该部分都被视为适用。 同样,如果当前 OS 版本小于 TargetOSVersion 修饰指定的 OS 版本,则该部分不适用。

如果提供内部版本号,则 TargetOSVersion 修饰的 OS 版本和 BuildNumber 必须大于首次引入此修饰的 Windows 10 内部版本 14310 的 OS 版本和内部版本号。 没有这些更改的操作系统早期版本(例如 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 包含以下 制造商 部分:

%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] 模型 部分。

  2. 如果 Windows 在任何产品套件的基于 x64 的操作系统版本(Windows XP 或更高版本)中运行,Windows 将选择 “FooMfg.NTamd64] 模型”部分。

如果 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)上执行,而不使用数据中心产品套件,并在“制造商”部分中找到以下条目

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

在这种情况下,Windows 查找名为 [FooMfg.NT.5]INF 模型部分。 如果 Windows XP 在 Datacenter 版本的 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]
%foo%=foosec,NTx86.5.1

[foosec.NTx86.5.1]

以下示例显示了特定于 x64 平台、Windows 10 内部版本 14393 及更高版本的制造商 部分:

[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 时,将它们字符串在一个条目中,如此示例所示。 不要将每个目标表示为单独的条目。

另请参阅

将平台扩展与操作系统版本组合在一起

Models

字符串