生成基本的 v4 打印机驱动程序

重要

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

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

重要

Microsoft 已宣布旧版 v3 和 v4 打印机驱动程序的使用期已结束。

有关详细信息,请参阅 Windows 上第三方打印机驱动程序的服务终止计划

警告

本打印机驱动程序教程包含多个错误,目前尚无法使用。

使用 Microsoft Visual Studio 2019 中的驱动程序开发向导,选择创建功能强大的打印机驱动程序所需的最小功能集,从而生成基本的 v4 打印机驱动程序。

本主题中的说明将侧重于介绍生成驱动程序所需的步骤,而不会对向导中的许多打印机驱动程序选项加以解释。

本主题旨在介绍在 Visual Studio 2019 中开发打印机驱动程序的过程。

有关打印机驱动程序选项的更多详细信息,请参阅浏览向导中的驱动程序选项

先决条件

请按照下载 Windows 驱动程序工具包 (WDK) 中的指导进行操作,并确保完成以下项目:

  1. 通过使用 C++ 的桌面开发工作负荷和正确版本的 Windows 10 SDK 来安装 Visual Studio 2019。

  2. 安装适用于 Windows 10 的 Windows 驱动程序工具包 (WDK),2004 版。

  3. 安装适用于 Visual Studio 2019 的 Windows 驱动程序工具包 (WDK) 扩展。

选择基本驱动程序的功能

  1. 在 Visual Studio 的主菜单中选择文件>新建>项目

  2. 在“新建项目”窗口的右上方搜索框中,输入“打印机驱动程序 v4”,然后按 Enter。 这样将检索名称包含搜索文本的所有驱动程序模板。

  3. 在中间窗格中,选择“打印机驱动程序 V4”。

  4. 在“名称”字段中输入驱动程序的名称,然后选择“确定”。 例如,可以键入 MyV4PrintDriver

  5. 在“创建 v4 打印驱动向导”中,在“选择驱动程序呈现类型:”下,选择“具有自定义呈现筛选器的 V4 打印驱动程序(仅接受 XPS)”。

  6. 将所有其他选项保留为默认设置,然后选择“下一步”。

  7. 在向导的“设置信息”部分中,将所有选项保留为默认设置,然后选择“下一步”。

  8. 在向导的“设置信息(第 2 页)”部分中,将所有选项保留为默认设置,然后选择“下一步”。

Microsoft Visual Studio 使用前面的选择来为 MyV4PrintDriver 生成项目文件。

验证生成的驱动程序文件

  1. 导航至生成的驱动程序文件所在的文件夹。 例如,如果将项目命名为 MyV4PrintDriver,那么默认情况下,文件将保存到以下位置:我的文档 > Visual Studio 2019 > 项目 > MyV4PrintDriver > MyV4PrintDriver

  2. 确认该文件夹包含以下文件:

    文件名 文件类型
    MyV4PrintDriver.gpd 打印机说明文件
    MyV4PrintDriver.inf 安装信息文件
    MyV4PrintDriver.vcxproj C++ 项目文件
    MyV4PrintDriver.vcxproj.filters C++ 项目筛选器文件
    MyV4PrintDriver-manifest.ini 配置设置文件(打印驱动程序清单)
    V4PrintDriver-Intellisense.js 用于 Intellisense 的 JavaScript 文件
    V4PrintDriver-Intellisense-Windows8.1.js 用于 Intellisense 的 JavaScript 文件

请注意,上表中创建的文件之一是 INF 文件。 请注意,Visual Studio 创建了一个框架 INF 文件,必须完成该文件才能用于安装驱动程序。

为驱动程序创建唯一的 PrinterDriverID

  1. 在 Visual Studio 工具菜单中,选择“创建 GUID”。

  2. 选择选项“4. 注册表格式”,然后选择“复制”按钮。

  3. 在 Visual Studio 的“解决方案资源管理器”中,展开 MyV4PrintDriver 节点。

  4. 选择“驱动程序文件”,然后在“属性”窗口中查看“唯一标识符”字段的值。 将此值替换为使用“粘贴”生成的 GUID。

完成 INF 文件

在 MyV4PrintDriver 项目中,应该有“驱动程序文件”项。 打开该文件,MyV4PrintDriver.inf 文件应该会出现在列表中。 打开此文件。

INF 文件的前两行是驱动程序包的版权声明。

第 1 行包含公司的年份和名称。 将字符 YYYY 替换为当前年份,将字符 <Your manufacturer name> 替换为贵公司的名称。

第 2 行描述了驱动程序 INF 的内容,包括制造商名称和设备型号信息。 用公司名称替换 <Your manufacturer name> 字符,用驱动程序支持的打印机型号名称替换 <Printer Model> 字符。

例如,如果年份是 2021 年,贵公司的名称是 Fabrikam,打印设备型号是 1234,则可以键入以下内容:

; Copyright (c) 2021 Fabrikam
; INF file for the Fabrikam 1234 print driver

2. 验证 [Version] 部分是否正确

查找包含 [Version] 的行。

  • 检查并确保看到此行:

    ClassVer=4.0
    
  • 检查并确保看到此行:

    Signature="$WINDOWS NT$"
    

3. 配置 [SourceDisksFiles] 部分

查找包含 [SourceDisksFiles] 的行。

在下面输入以下几行:

MyV4PrintDriver.gpd=1
MyV4PrintDriver-manifest.ini=1
MyV4PrintDriverRenderFilter-PipelineConfig.xml=1
MyV4PrintDriverRenderFilter.dll=1

4. 配置 [DriverFiles] 部分

查找包含 [DriverFiles] 的行。

在下面输入以下几行:

MyV4PrintDriver.gpd
MyV4PrintDriver-manifest.ini
MyV4PrintDriverRenderFilter-PipelineConfig.xml
MyV4PrintDriverRenderFilter.dll

5. 配置 [Standard.NT$ARCH$] 部分

查找包含 [Standard.NT$ARCH$] 的行。

此部分引用了每个型号 INF 的 Install 部分。 例如,如果打印机型号是 Fabrikam 1234,则可以键入以下内容:

"Fabrikam 1234"=DriverInstall, USBPRINT\\Fabrikam1234
"Fabrikam 1234"=DriverInstall, WSDPRINT\\Fabrikam1234

6. 将 PrinterDriverID 添加到 INF 文件

在 Visual Studio 的“解决方案资源管理器”中,展开 MyV4PrintDriver 节点。

选择“驱动程序文件”,然后在“属性”窗口中查看“唯一标识符”字段的值。 这是驱动程序 ID (GUID)。 将其突出显示并复制。

在 INF 文件的 [Standard.NT$ARCH$$] 部分中键入以下行:

"Fabrikam 1234"=DriverInstall,

然后在逗号后粘贴上一步中复制的 GUID。 完成的 [Standard.NT$ARCH$] 部分应如下所示:

"Fabrikam 1234"=DriverInstall, {GUID}
"Fabrikam 1234"=DriverInstall, USBPRINT\Fabrikam1234
"Fabrikam 1234"=DriverInstall, WSDPRINT\Fabrikam1234

7. 配置 [Strings] 部分

查找包含 [Strings] 的行。

下面是 ManufacturerName 字符串的定义。 将 <Your manufacturer name> 字符替换为贵公司名称,以提供目标打印机的制造商名称,并删除包含 ;TODO 的其余行内容:

例如,如果贵公司的名称是 Fabrikam,则可以键入以下内容:

ManufacturerName="Fabrikam"

8. 保存 INF 文件

完成 INF 文件后,它应该如下所示:

; Copyright (c) 2021 Fabrikam
; INF file for the Fabrikam 1234 print driver

[Version]
Signature="$Windows NT$"
Class=Printer
ClassGuid={4D36E979-E325-11CE-BFC1-08002BE10318}
Provider=%ManufacturerName%
CatalogFile=MyV4PrintDriver.cat
ClassVer=4.0
DriverVer=03/17/2014,1.0.0.0
PnpLockdown=1

[Manufacturer]
%ManufacturerName%=Standard,NT$ARCH$

[Standard.NT$ARCH$]
"Fabrikam 1234"=DriverInstall, {GUID}
"Fabrikam 1234"=DriverInstall, USBPRINT\Fabrikam1234
"Fabrikam 1234"=DriverInstall, WSDPRINT\Fabrikam1234

[DriverInstall]
CopyFiles=DriverFiles

[DriverFiles]
MyV4PrintDriver.gpd
MyV4PrintDriver-manifest.ini
MyV4PrintDriverRenderFilter-PipelineConfig.xml
MyV4PrintDriverRenderFilter.dll

[DestinationDirs]
DefaultDestDir = 66000

[SourceDisksNames]
1 = %DiskName%,,,""

[SourceDisksFiles]
MyV4PrintDriver.gpd=1
MyV4PrintDriver-manifest.ini=1
MyV4PrintDriverRenderFilter-PipelineConfig.xml=1
MyV4PrintDriverRenderFilter.dll=1

[Strings]
ManufacturerName="Fabrikam"
DiskName="MyV4PrintDriver Installation Disk"

更新“驱动程序文件”列表

  1. 在 Visual Studio 的“解决方案资源管理器”中,展开 MyV4PrinterDriver 节点。

  2. 选择 MyV4PrintDriver.gpd 文件并将其拖到“驱动程序文件”节点。

  3. 对 MyV4PrintDriver-manifest.ini 执行相同的操作。

将管道配置文件添加到驱动程序包

  1. 在“解决方案资源管理器”中,选择并按住(或右键单击)MyV4PrintDriver 项目,然后选择“属性”。

  2. 在“MyV4PrintDriver 属性页面”窗口中,展开左窗格中的“配置属性”。

  3. 展开“驱动程序安装”,然后选择“程序包文件”。

  4. 在右窗格中进行选择,然后单击所列文件中的“编辑...”行。<>

    选择程序包文件编辑行。

  5. 将占位符替换为管道配置文件的相对路径,例如 ../MyV4PrintDriver Render Filter/MyV4PrintDriverRenderFilter-PipelineConfig.xml,然后单击“确定”。

    将占位符  替换为相对路径。

在驱动程序包中添加对呈现筛选器的引用

  1. 在 Visual Studio 的“解决方案资源管理器”中,展开 MyV4PrinterDriver 节点。

  2. 选择并按住(或右键单击)“引用”节点 -> 选择“添加引用”。

  3. 选中“MyV4PrintDriver 呈现筛选器”的复选框,然后选择“确定”。

为调试和部署配置驱动程序解决方案

  1. 在“解决方案资源管理器”中,选择并按住(或右键单击)MyV4PrintDriver 项目,然后选择“属性”。

  2. 在“MyV4PrintDriver 属性页面”窗口中,展开左窗格中的“配置属性”。

  3. 展开“驱动程序安装”,然后选择“部署”。 在右窗格中执行以下操作:

    • 确保已配置“目标计算机名称”。 如果未配置,请选择“...”并按照“配置设备”向导中的提示设置远程目标计算机。

    • 选中“部署前删除以前的驱动程序版本”

    • 选择“安装/重新安装并验证”,然后从下拉框中选择“默认打印机驱动程序包安装任务”。

    • 在“可选参数”字段中键入驱动程序的名称(名称前后不加引号)。

    • 选择“确定”

配置驱动程序签名

  1. 在“解决方案资源管理器”中,选择并按住(或右键单击)MyV4PrintDriver 项目,然后选择“属性”。

  2. 在“MyV4PrintDriver 属性页面”窗口中,展开左窗格中的“配置属性”。

  3. 展开“驱动程序签名”,然后选择“常规”。

  4. 在右窗格中,确认“签名模式”已设置为“测试签名”。

  5. 选择“测试证书”,然后从下拉框中选择“创建测试证书...”。

  6. 选择 TimeStampServer,然后从下拉列表框中选择 Verisign。

  7. 选择“确定”

生成和部署驱动程序

  1. 在“解决方案资源管理器”中,选择并按住(或右键单击)“解决方案 MyV4PrintDriver(2 个项目)”,然后选择“生成解决方案”。

  2. 生成过程完成后,驱动程序将自动安装。 确保“输出”窗口中没有错误。

测试驱动程序

使用即插即用或“添加打印机向导”来创建打印队列。

有关 v4 打印机驱动程序 INF 文件的详细信息,请参阅 V4 驱动程序 INF

除了上表中的文件外,请注意还创建了 MyV4PrintDriver Render Filter 文件夹。 这是呈现筛选器项目模板,它为生成 XPS 呈现筛选器和 XPS 筛选器管道配置文件奠定了良好的基础。 有关 XPS 呈现筛选器的详细信息,请参阅 XPSDrv 呈现模块