创建适用于多个平台和操作系统的 INF 文件
通过将系统定义的平台扩展用于 INF 文件部分和指令,可以为跨平台安装创建单个 INF 文件。 这些扩展使你能够创建 修饰 的节名称,这些名称指定与每个目标平台和操作系统相关的节和指令。 例如,可以创建一个 INF 文件,该文件仅在基于 x64 的系统、基于 Itanium 的系统、基于 x86 的系统或 Windows 2000 及更高版本 Windows 支持的所有系统上安装设备。
下表汇总了系统支持的平台扩展,这些扩展可以添加到支持扩展的节的名称中。
平台扩展 | 用途 |
---|---|
.ntamd64 |
本节包含有关在 Windows XP 及更高版本支持的基于 x64 的系统上安装设备或设备兼容模型集的说明。 |
.ntia64 |
本节包含有关在 Windows XP 及更高版本支持的基于 Itanium 的系统上安装一个设备或一组与设备兼容的模型的说明。 |
.ntx86 |
本节包含有关在 Windows XP 及更高版本支持的基于 x86 的系统上安装设备或设备兼容模型集的说明。 |
.ntarm |
部分包含有关在受 Windows 8 及更高版本支持的基于 Arm 的系统上安装设备或一组与设备兼容的模型的说明。 |
.ntarm64 |
本节包含有关在基于 arm64 的系统上安装设备或设备兼容模型集的说明,这些模型受 Windows 10 版本 1709 及更高版本支持。 |
。Nt |
在早于 Windows Server 2003 SP1 的 Windows 版本中, 部分包含有关在操作系统支持的所有系统上安装设备或设备兼容模型集的说明。 从 Windows Server 2003 SP1 开始,本节包含有关在操作系统支持的基于 x86 的系统上安装设备或设备兼容模型集的说明。 |
(无平台扩展) |
在早于 Windows Server 2003 SP1 的 Windows 版本中, 部分包含有关在操作系统支持的所有系统上安装设备或设备兼容模型集的说明。 从 Windows Server 2003 SP1 开始,本节包含有关在操作系统支持的基于 x86 的系统上安装设备或设备兼容模型集的说明。 |
在 Windows Server 2003 Service Pack 1 (SP1) 及更高版本中,INF 文件必须使用 .ntia64、.ntarm、.ntarm64 或 .ntamd64 平台扩展修饰INF 模型部分中的条目,以指定非 x86 目标操作系统版本。 对于基于 x86 的目标操作系统版本,INF 文件中不需要这些平台扩展,但强烈建议这样做。 在支持平台扩展的所有其他部分中,相同的平台扩展修饰或 .nt 平台扩展是可选的。
注意
强烈建议始终使用 Windows XP 和更高版本的 Windows 的目标操作系统的平台扩展来修饰 INF 模型部分中 的条目。 对于基于 x86 的硬件平台,应避免使用 .nt 平台扩展,而改用 .ntx86 。
对于支持可选平台扩展的部分,Windows 选择要处理的分区,如下所示:
Windows 检查 section-name.nt<体系结构>部分,如果存在,则对其进行处理。 Windows 检查正在处理的 INF 文件中以及任何包含的 INF 文件中的 .nt<体系结构> 扩展名, (即, 包含 条目包含的任何 INF 文件) 。
如果 section-name.nt<architecture> 节不存在,Windows 会在 INF 文件或任何包含的 INF 文件中检查 section-name.nt 节。 如果存在,Windows 将处理 section-name.nt 节。
如果 section-name.nt 节不存在,Windows 将处理不包含平台扩展的 section-name 节。
对于 .nt 和 .nt<体系结构>平台扩展是可选的部分,创建和维护跨平台系统 INF 文件的最简单方法是不要在这些节名称上使用平台扩展,而仅在 INF 模型部分的名称中包含 .nt<体系结构>扩展名。 但是,这假定 INF 文件不需要复制特定于体系结构的文件版本,并且安装设置在体系结构中是相同的。 有关跨平台 INF 的更多高级方案,请参阅 将平台扩展与其他部分名称扩展组合在一起。
若要创建这样一个简单的跨平台 INF 文件,请执行以下操作:
创建一个有效的 INF 文件,其中包含所有 INF 文件中所需的通用条目,如 INF 文件的一般准则中所述。
包括一个 INF Manufacturer 节,其中包含指定设备的 INF 模型部分名称和指定 .nt<体系结构>平台扩展的制造商标识符。 例如,以下 Manufacturer 节为 Abc 设备指定“AbcModelSection”的 INF Models 节名称和 .nt<体系结构> 平台扩展。
[Manufacturer] ; The manufacturer-identifier for the Abc device. %ManufacturerName%=AbcModelSection,nt<architecture>
包括 Models.nt<architecture> 节,其名称与 Manufacturer 节中由 manufacturer-identifier 指定的 Models 节名称匹配。 例如,Abc 设备的以下 AbcModelSection.nt <体系结构>部分包含 device-description,该说明指定 install-section-name 为“AbcInstallSection”。
[AbcModelSection.nt<architecture>] %AbcDeviceName%=AbcInstallSection,Abc-hw-id
包括一个 DDInstall 节,该节的名称与 Models 节指定的 install-section-name 相匹配。 例如,AbcModelSection 节中的 device-description 为 Abc 设备指定以下 AbcInstallSection 节。
[AbcInstallSection] ; Install section entries go here. ...
包括安装设备所需的其他特定于设备的部分,但这些部分的名称上不包含 .nt<体系结构> 平台扩展。 有关 INF 文件部分和指令的详细信息,请参阅 INF 节摘要 和 INF 指令摘要。