“ 制造商 ”部分标识可以使用 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 的。
建筑
标识硬件平台。 如果指定,则必须为 x86、 ia64、 amd64、 arm 或 arm64。
在 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 |
产品类型
表示 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 Server 2025 | 26100 |
Windows 11 版本 24H2 | 26100 |
Windows 11 Version 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 模型 部分 :
如果 Windows 在包含数据中心产品套件的基于 x86 的作系统版本(Windows XP 或更高版本)中运行,Windows 将选择 [FooMfg.NTx86....0x80]“模型 ”部分。
如果 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)上执行,而不使用数据中心产品套件,并在 “制造商 ”部分中找到以下条目:
%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 时,将它们字符串在一个条目中,如此示例所示。 不要将每个目标表示为单独的条目。