V4 驱动程序清单

重要

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

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

v4 打印驱动程序清单是一个文本文件,其中包含了所有特定于打印机的安装指令。 v4 打印驱动程序清单与 v4 打印驱动程序 INF 文件一起使用,是打印机专用 v4 打印驱动程序安装的一部分。

清单中的指令按部分进行整理:

DriverConfig 部分

下表列出了 DriverConfig 部分中使用的指令。

指令 限制 使用情况
RequiredFiles

包括 ntprint.inf 或 ntprint4.inf 中的文件。

在 Windows 10 中,RequiredFiles 指令支持以下值:

PWGRRenderFilter.dll:将 Microsoft PWG 光栅呈现筛选器添加到驱动程序的依赖文件列表中。

PWG 光栅呈现筛选器要求驱动程序使用 PrintDeviceCapabilities 文件进行配置。
此列表中应略去 Unidrv.dll、pscript5.dll 和 mxdwdrv.dll。 它们会被自动解决。 示例:

RequiredFiles=
UNIRES.DLL、
STDNAMES.GPD、
V3HOSTINGFILTER.DLL
RequiredClass

通过将设备的驱动程序/友好名称及其 GUID 作为键,让驱动程序包含已定义类驱动程序的所有文件。 这是 printclass 驱动程序与特定模型驱动程序的链接机制。
类驱动程序不能使用 RequiredClass 指令。 在使用 RequiredClass 时,应避免打印机驱动程序和要链接的打印类驱动程序之间发生文件名冲突。

虽然名称相似的文件不会相互覆盖,但在故障排除过程中可能很难区分类驱动程序包文件和 v4 打印机驱动程序文件。
示例:

RequiredClass=
"Fabrikam PCL5e Class Driver",(9343720D-B67E-4451-B93F-6F721C439771)
DriverFile

这会指向呈现二进制文件。 默认情况下使用 Mxdwdrv,但类驱动程序也可以指定 unidrv.dll 或 pscript5.dll。 这与 v3 INF 中的相同指令功能相同。
只能在类驱动程序中设置。 有效的选项为 unidrv.dll 或 pscript5.dll。 V4 打印驱动程序要么继承自 RequiredClass,要么默认使用 mxdwdrv.dll DriverFile=unidrv.dll
DataFile

这定义了该驱动程序的主 GPD 或 PPD。 这与 v3 INF 中的相同指令功能相同。

在 Windows 10 中,v4 打印驱动程序可以继续指定 GPD 或 PPD DataFile,但也可以描述 PrintDeviceCapabilities 格式的 DataFile。
必需。 示例:

DataFile=FAPDL.gpd
DataFile=FAPDL.xml
DataFileType

在将 PrintDeviceCapabilities 文件描述为 DataFile 时必须使用 DataFileType,也可与基于 GPD 或 PPD 的 DataFile 配合使用。
是 PrintDeviceCapabilities 文件所必需的。 示例:

DataFileType=
"application/vnd.ms-PrintDeviceCapabilities+xml"
标记

这用于指定与驱动程序相关的可选属性。

NotShareable:此标志表示驱动程序不可共享。 这适用于 Microsoft XPS Document Writer 等虚拟驱动程序。

SoftResetOnJobCancellation:此标志用于指定打印任务取消时设备需要 USB 软重置 (IOCTL_USBPRINT_SOFT_RESET)。 ArchiveEnabled v4 驱动程序使用此标志请求将经过存档优化的 XPS 作为后台处理程序文件。
无。 示例:

Flags=
NotShareable、
SoftResetOnJobCancellation
Flags=
ArchiveEnabled,NotShareable
PrinterDriverID

这是描述打印驱动程序的唯一 ID。 如果两个驱动程序指定了相同的 PrinterDriverID,那么它们必须兼容共享并支持相同的打印机扩展。
必需。 PrinterDriverID=
{guid}
PropertyBag

为此驱动程序指定一个驱动程序属性包。 这是一个由 DriverPropertyBagTool.exe 或 Visual Studio 生成的编译文件。
无。 PropertyBag=
FAProperty.dpb
ResourceFile

定义驱动程序字符串资源 DLL 的名称。

在 Windows 10 中,驱动程序可以使用 .resx 格式来指定 ResourceFile。
无。 示例:

ResourceFile=
FARC.dll
ConstraintScript

定义驱动程序的 JavaScript 约束文件的名称。
无。 ConstraintScript=
FAConst.js
DriverCategory

在多个选项之间定义设备类别。 有效选项如下:
PrintFax.Fax PrintFax.Printer PrintFax.Printer.3D PrintFax.Printer.File PrintFax.Printer.Service PrintFax.Printer.Virtual
必需。 DriverCategory=
PrintFax.Printer

有关其他驱动程序类别的详细信息,请参阅打印机 INF 文件条目
PrinterExtensionUrl

指定用户用于获取打印机扩展应用副本的 URL。 用于打印机共享。
无。 PrinterExtensionUrl=
"https://www.fabrikam.com/files/setup.exe";
DevModeMap

指定 Devmode 映射文件。 这是一个 XML 文件,用于在 JavaScript 代码中将 PrintTicket 转换为 DEVMODE。
无。 DevModeMap=
fadmmap.xml
EventFile

指定驱动程序事件 XML 文件。
无。 EventFile=
faevents.xml
QueueProperties

指定队列属性包的格式。 这是一个 XML 文件并且不得编译。
无。 QueueProperties=
faQueueProps.xml
BidiUSBStatusInterface

指定与一个或多个用于 USB Bidi 通信的设备接口相匹配的硬件 ID 列表。
无,但只有在通过非打印接口的 USB 接口执行状态操作时才支持。 BidiUSBStatusInterface=
"USB\vid_1234&pid_1234",
"USB\vid_1234&pid_4567"
UserPropertyBagScope

此指令将用户属性包的范围指定为队列或制造商。
如果省略该指令,则默认值为 Queue。 此指令的有效选项如下:

队列:这是默认配置,与 Windows 8 的行为一致。 制造商:INF 中使用相同制造商字符串的所有队列都会使用相同的用户属性包。
无。 UserPropertyBagScope=
制造商
RetrievePrintDeviceCapabilitiesFromDevice

v4 驱动程序可以指定必须从 WS-Print v2.0 打印机检索 PrintDeviceCapabilities 文件,只要它们将 PrintDeviceCapabilities 文件设为驱动程序的 DataFile,且 DataFileType 也表明 DataFile 的 MIME 类型为“application/vnd.ms-PrintDeviceCapabilities+xml”即可。

有效选项:

True:允许使用设备上的 PrintDeviceCapabilities 文件替换驱动程序的本地 DataFile。

False:驱动程序的本地 DataFile 不会被设备的 PrintDeviceCapabilities 文件替换。

如果未指定,则此指令的默认值为 false。
无。 示例:

RetrievePrintDeviceCapabilitiesFromDevice=

BidiFiles 部分

BidiFiles 部分用于定义 Bidi 扩展文件。 它与 Windows 7 的 TCP 和 WSD 格式完全相同。 USB 关键字是新的。

下表列出了 BidiFiles 部分中使用的指令。

指令 限制 使用情况
BidiSPMFile
这定义了基于 TCP/IP 的打印机的 Bidi 扩展文件。
无。 BidiSPMFile=FaBidiSPM.xml
BidiWSDFile
这定义了基于 WSD 的打印机的 Bidi 扩展文件。
无。 BidiWSDFile=FABidiWSD.xml
BidiUSBFile
这定义了 USB 的 Bidi 扩展。
无。 BidiUSBFile=FABidiUSB.xml
BidiUSBJSFile
这定义了 USB 的 JavaScript 扩展。
无。 BidiUSBJSFile=FABidiUSBJS.js

DriverRender 部分

下表列出了 DriverRender 部分中使用的指令。

指令 限制 使用情况
PageOutputQuality.[OptionName]
根据作业 PrintTicket 中的 PageOutputQuality 值更改图像压缩
OptionName 必须是标准 PrintSchema 命名空间中指定的名称。 PageOutputQuality.Draft=
MxdcImageType.JPEGHigh

PageOutputQuality.Normal=
MxdcImageType.JPEGMedium

PageOutputQuality.High=
MxdcImageType.PNG
XpsFormat
更改打印系统为该驱动程序生成的 XPS 格式。 可以指定多个值,顺序代表了驱动程序的首选项。
不适用于使用 Unidrv/PScript 呈现的类驱动程序。 XpsFormat=XPS

XpsFormat=OpenXPS

XPSFormat=OpenXPS,XPS

XPSFormat=XPS,OpenXPS
OutputFormat
OutputFormat 指令描述该驱动程序使用 MIME 类型生成的单个 PDL。
此信息用于 WSD 打印机的 CreateJob 或 CreateJob2 操作。
无。 有效的使用类型包括:

OutputFormat=
"application/oxps"

OutputFormat=
"application/vnd.ms-xpsdocument"

OutputFormat=
"image/pwg-raster"

OutputFormat=
"application/vnd.ms-3mfdocument"

也可在此处指定任何其他有效的已定义 MIME 类型。

PageOutputQuality 指令的 MxdcImageType 关键字包含以下允许值:

MxdcImageType 值
MxdcImageType.JPEGHigh
高压缩 JPEG(文件更小)
MxdcImageType.JPEGMedium
中等压缩 JPEG
MxdcImageType.JPEGLow
低压缩 JPEG
MxdcImageType.PNG
PNG 文件类型(文件最大)

FileSave 部分

本部分支持文件保存方案。 在根据新的 PORTPROMPT 端口类型安装 v4 打印驱动程序时,本部分将指定在“通用文件”窗口中显示的文件扩展,并指定支持扩展和对话框本身的可本地化资源字符串。

指令 限制 使用情况
<FileExtensionName>
此指令描述了使用 PORTPROMPT 端口从该驱动程序保存文件时要使用的 FileExtension。 该值是驱动程序 ResourceFile 中的 resourceID。 只有 XPS 和 OXPS 可将资源 ID 指定为 0,打印后台处理程序将为此使用其内部资源。
无。 <FileExtensionName>=
<resourceID>
Xps=1234
SaveAsTitle
该指令描述了要在“保存文件”对话框中使用的标题。 该值是驱动程序 ResourceFile 中的 resourceID。
无。 SaveAsTitle=
<resourceID>
SaveAsTitle=4321

PrinterExtensions 部分

PrinterExtensions 部分指定了打印机扩展及其支持的调用模式。 对于这两个条目,应用将自动在打印系统中注册。 此外,该应用程序还配置了两个不同的参数,依次是 PrinterDriverID 和 ReasonID。 因此,每个条目必须使用不同的 PrinterExtensionID GUID。

下表列出了 PrinterExtensions 部分中使用的指令。

指令 限制 使用情况
DriverEvent
为 DriverEvent 模式提供服务的应用。
无。 DriverEvent=
app.exe,{extensionID GUID}
PrintPreferences
为 PrintPreferences 模式提供服务的应用。
无。 PrintPreferences=
app.exe, {extensionID GUID}

以下是 v4 打印驱动程序清单的示例。

[DriverConfig]
DataFile=FAPDL.xml
RequiredFiles=UNIRES.DLL,STDNAMES.GPD,STDDTYPE.GDL,STDSCHEM.GDL,STDSCHMX.GDL,XPSSVCS.DLL,MSXPSINC.GPD,PWGRRenderFilter.DLL
ResourceFile=FARC.dll
PropertyBag=FAProperty.dpb
PrinterDriverID={GUID}
DriverCategory=PrintFax.Printer
ConstraintScript=faconst.js
EventFile=faevents.xml
PrinterExtensionUrl="https://www.fabrikam.com/download.asp?uiapp=120"
UserPropertyBagScope=Manufacturer
DataFileType="application/vnd.ms-PrintDeviceCapabilities+xml"
RetrievePrintDeviceCapabilitiesFromDevice=true

[BidiFiles]
BidiSPMFile=FABidiSPM.xml
BidiWSDFile=FABidiWSD.xml
BidiUSBFile=FaBidiUSB.xml
BidiUSBJSFile=FABidiUSBJS.js

[DriverRender]
PageOutputQuality.Draft=MxdcImageType.JPEGHigh
PageOutputQuality.Normal=MxdcImageType.JPEGMedium
PageOutputQuality.High=MxdcImageType.PNG
OutputFormat="image/pwg-raster"

[PrinterExtensions]
DriverEvent=FAapp.exe,{GUID}
PrintPreferences=FAapp.exe,{GUID2}

打印机 INF 文件项