如何使用打印机驱动程序 INF 文件中的修饰

重要

新式打印平台是 Windows 与打印机通信的首选方式。 建议使用 Microsoft 的 IPP 收件箱类驱动程序以及打印支持应用 (PSA) 来自定义 Windows 10 和 11 中的打印体验,以便进行打印机设备开发。

有关详细信息,请参阅新式打印平台打印支持应用设计指南

在带 SP1 及更高版本的 Windows Server 2003 或 64 位版本的 Windows XP 及更高版本上运行的打印机驱动程序,以及针对 x64 体系结构的打印机驱动程序,必须包含一个已修饰的 INF 模型部分,如下例所示。 但是,由于驱动程序可能作为附加驱动程序安装在带 SP1 的 Windows Server 2003 之前的 Windows 版本上,因此 INF 文件还必须提供一个未修饰的 INF 模型部分。 此外,还建议使用修饰来安装基于 Itanium 的驱动程序。

以下示例介绍了如何编写 INF 文件,用于安装单处理器体系结构的驱动程序。

x64 驱动程序示例

第一个示例展示了如何使用未修饰的 INF 模型部分,在 Windows XP 之前的 Windows 版本上,或在运行 Windows XP 或 Windows Server 2003 的基于 x86 或 Itanium 的计算机上安装 x64 驱动程序。 第二部分 INF 模型中的 NTamd64 修饰会导致 x64 驱动程序安装在运行 Windows Server 2003 SP1 或更高版本的任何处理器体系结构的计算机上。

[MANUFACTURER]
%Acme Corp.% = Acme, NTamd64
...

[Acme]
"Acme LaserWhiz 100 PS" = Acme100_x64.PPD, <hardware IDs and compatible IDs for this printer>

[Acme.NTamd64]
"Acme LaserWhiz 100 PS" = Acme100_x64.PPD, <hardware IDs and compatible IDs for this printer>

基于 Itanium 的驱动程序示例

下一个示例展示了如何在 Windows XP 以前的 Windows 版本上,或在运行 Windows XP 或 SP1 以前的 Windows Server 2003 的 x86 计算机上安装基于 Itanium 的驱动程序。 第二部分 INF 模型中的 NTia64 修饰会导致在运行 Windows Server 2003 SP1 或更高版本的任何处理器体系结构的计算机上安装基于 Itanium 的驱动程序。

[MANUFACTURER]
%Acme Corp.% = Acme, NTia64
...

[Acme]
"Acme LaserWhiz 100 PS" = Acme100_ia64.PPD, <hardware IDs and compatible IDs for this printer>

[Acme.NTia64]
"Acme LaserWhiz 100 PS" = Acme100_ia64.PPD, <hardware IDs and compatible IDs for this printer>

x86 驱动程序示例

在下一个示例中,INF 模型部分不需要修饰。 无需指定处理器体系结构,因为未修饰部分会被假定为是指 x86 驱动程序。 允许添加带有 NTx86 修饰的 INF 模型部分,但请记住,对于 Windows Server 2003 SP1 之前的 Windows 版本,还应包含一个未修饰的 INF 模型部分。

[MANUFACTURER]
%Acme Corp.% = Acme
...

[Acme]
"Acme LaserWhiz 100 PS" = Acme100_x86.PPD, <hardware IDs and compatible IDs for this printer>

在单个 INF 文件中支持多种体系结构

本部分介绍如何编写 INF 文件,用于为多种处理器体系结构安装打印机驱动程序。

要创建一个可用于为多种体系结构安装驱动程序的 INF 文件,请编写一个 INF 模型部分,然后根据需要复制多个副本,以便让每个支持的体系结构都有自己的 INF 模型部分。 如下面的示例所示,为每个处理器体系结构的 INF 模型部分添加适当的修饰。

[MANUFACTURER]
%Acme Corp% = Acme, NTamd64, NTia64
...

;; Used to install
;;    - a driver of any architecture type, on a machine running Windows 2000
;;    - a driver of any architecture type, on an x86 machine running Windows XP or Windows Server 2003
;;    - an x86 driver on a machine of any architecture type, running Windows Server 2003 with SP1
[Acme]
%Acme Model 1% = Acme100PS, <hardware IDs and compatible IDs for this printer>

;; Used to install
;;    - an x64 driver on a machine of any architecture type, running Windows Server 2003 with SP1
[Acme.NTamd64]
%Acme Model 1% = Acme100PS, <hardware IDs and compatible IDs for this printer>

;; Used to install
;;    - a driver of any architecture type, on an Itanium-based machine running Windows XP or Windows Server 2003
;;    - an Itanium-based driver on a machine of any architecture type, running Windows Server 2003 with SP1
[Acme.NTia64]
%Acme Model 1% = Acme100PS, <hardware IDs and compatible IDs for this printer>

;; DDInstall Section. 
;; This sample assumes that all three versions of the driver 
;; use the same DDInstall section.
[Acme100PS]
CopyFiles = MyDriverFile.dll, ...

[DestinationDirs]
DefaultDestDir=66000

[SourceDisksNames.x86]
1= %Location%,,,

[SourceDisksFiles.x86]
MyDriverFile.dll = 1,\i386
...

[SourceDisksNames.amd64]
1= %Location%,,,

[SourceDisksFiles.amd64]
MyDriverFile.dll = 1,\amd64
...

[SourceDisksNames.ia64]
1= %Location%,,,

[SourceDisksFiles.ia64]
MyDriverFile.dll = 1,\ia64
...

[Strings]
Acme Corp = "Acme Corporation"
Acme Model 1 = "Acme LaserWhiz 100 PS"
Location = "Acme CD ROM"