驱动程序控制和设备控制

重要

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

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

如果颜色管理控制由驱动程序或打印机硬件提供,则驱动程序的打印机图形 DLL 必须在 DEVINFO 结构中设置 GCAPS_ICM 标志。

驱动程序必须表示支持 CMYK 颜色空间(如适用),如支持 CMYK 颜色空间中所述。

打印机图形 DLL 必须定义以下三个函数:

GDI 调用 DrvIcmCreateColorTransform 函数,为打印作业提供 ICC 配置文件。 鉴于这些配置文件,此函数就能创建内部颜色转换,以用于校正颜色信息。 颜色转换是一种特定于驱动程序的、内部定义的从一种颜色空间到另一种颜色空间的映射。 该函数返回一个转换句柄,由 GDI 保存。

BRUSHOBJXLATEOBJ 结构中的标志指示颜色管理是由系统(或应用程序)还是由驱动程序(或设备)执行。 在每个由驱动程序实现的图形 DDI 绘图函数中,如果接收到这些结构中的一个(或两个),则必须检查标记。 如果系统或应用程序当前正在处理颜色管理,则驱动程序或设备不得处理颜色管理。 如果启用了驱动程序或设备颜色管理,则图形 DDI 函数必须调用 BRUSHOBJ_hGetColorTransformXLATEOBJ_hGetColorTransform(或两者),以获取要使用的颜色转换句柄。 该句柄将是驱动程序在之前调用其 DrvIcmCreateColorTransform 函数时提供的句柄。

处理专有颜色管理

对于某些设备,无论是否启用 ICM,都会执行专有颜色管理(由驱动程序或硬件执行)。 如果接收到的图像数据已经过校正,则此类设备的驱动程序不得允许执行颜色校正。 在下列情况下,可以接收到预先更正的数据:

  • 应用程序在“DC 之外”对图像进行了颜色校正(请参阅 Microsoft Windows SDK 文档)。

  • 颜色管理由系统处理。

对于上述任一情况,BRUSHOBJflColorType 成员中的 BR_HOST_ICM 标志和 XLATEOBJflXlate 成员中的 XO_HOST_ICM 标志都将被设置。 即使 DEVMODEWdmICMMethod 成员为 DMICMMETHOD_NONE,也可以设置这些标志。