编写核心驱动程序
重要
新式打印平台是 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 中不会向用户显示核心驱动程序。