编写核心驱动程序

重要

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

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

打印驱动程序编写器可以使用 Windows Vista 提供的核心驱动程序功能。 要制作核心驱动程序,需要生成一个 GUID,而其他驱动程序包可以用它来引用组成核心驱动程序的文件集。 例如,在 Ntprint.inf 中,Unidrv 核心驱动程序文件定义如下所示:

[Microsoft.NTx86]
"{D20EA372-DD35-4950-9ED8-A6335AFE79F0}" =  
  {D20EA372-DD35-4950-9ED8-A6335AFE79F0}, 
  {D20EA372-DD35-4950-9ED8-A6335AFE79F0}
[{D20EA372-DD35-4950-9ED8-A6335AFE79F0}]
CopyFiles=UNIDRV,PJLMON.DLL,@TTFSUB.GPD,@LOCALE.GPD,@MSXPSINC.GPD
[UNIDRV]
; Unidrv files and pjlmon sections follow...

通过使用此定义,打印驱动程序 INF 文件就可以通过使用 CoreDriverSections 关键字来引用核心驱动程序文件,如前例所示。

需要注意的是,核心驱动程序必须保留与早期版本的兼容性。 由于可能有多个驱动程序使用核心驱动程序,因此在更新核心驱动程序时,它必须继续与依赖于它的现有驱动程序一起使用。 核心驱动程序必须作为驱动程序包的一部分交付。

核心驱动程序由“模型”部分定义,其中包括设备说明,即核心驱动程序 GUID。 例如:

; Model section
[Company.NTx86]
"{GUID1}" = {GUID1}, {GUID1}

; Install section - must list all files in the core printer driver
[{GUID1}]
DriverVer = MM/DD/YYYY,1.1.1.1
CopyFiles=MANUFACTURER_CORE_FILESET

; Core Driver Section, can use print-specific INF keywords here
[MANUFACTURER_CORE]
CopyFiles=MANUFACTURER_CORE_FILESET

[MANUFACTURER_CORE_FILESET]
File1.dll
File2.dll
File3.dll

[ControlFlags]
AlwaysExcludeFromSelect = {GUID1}

核心驱动程序必须通过使用 DriverVer 关键字在安装部分内包含版本信息。 安装部分还必须列出核心驱动程序所需的全部文件。 使用新的 AlwaysExcludeFromSelect 关键字可确保 UI 中不会向用户显示核心驱动程序。