下图演示了打印数据从打印处理器传送到打印机的路径,这些打印机可以分为两种情况:a)有语言监视器与其关联的情况;b)没有语言监视器与其关联的情况。
如果在打印机安装过程中关联了语言监视器,语言监视器将从后台程序的打印处理器接收打印机的数据流。 语言监视器修改数据流并将其传递给打印机的端口监视器。
打印监视器定义的大多数函数对于语言监视器和端口监视器都是相同的。 通常,如果语言监视器位于数据流路径中,后台处理程序将调用语言监视器的函数实现,语言监视器调用端口监视器的同一函数实现。 例如,PJL 语言监视器(Pjlmon.dll)中的 WritePort 函数将 PJL 命令添加到数据流,然后调用端口监视器的 WritePort 将流发送到端口驱动程序。
如果未安装语言监视器,后台处理程序将调用端口监视器的函数。
由于语言监视器和端口监视器是打印体系结构的离散组件,因此自定义和Microsoft提供的监视器可以一起使用。 因此,可以提供与Microsoft提供的端口监视器结合使用的自定义语言监视器,反之亦然。
还可以提供由 组合语言和端口监视器组成的单个打印监视器。