如何使用打印机驱动程序 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"