我正在处理 Citrix 环境中的一个大打印问题,并一直在尝试尽可能多地了解网络打印的工作原理。
我将提供我认为能够理解的内容,请纠正或填补我未能理解的空白。
环境
每晚配置(重新映像)的 Citrix Desktop。
桌面是 Server 2008 R2 x64
打印机配置为
Advanced Printing
启用。单个打印服务器,Windows 2008 R2 x64
印刷工艺
用户登录计算机。映射网络打印机。在映射过程中,将查询打印服务器以确定本地安装的打印机驱动程序是否是最新的。如果不是,则安装新的驱动程序。
用户打开 WinWord(32 位)并调出打印预览屏幕
应用程序查询默认打印机设置,并使用本地可用的打印驱动程序显示文档。
用户提交要打印的文档。打印服务器会查询是否有更新的驱动程序,如果有则下载。
文档被发送到客户端后台处理程序 (
splWOW64
),并转换为位于 的临时文件C:\Windows\System32\spool\PRINTERS
。应用程序被发布以执行其业务。(对此更加不确定)客户端后台处理程序利用本地安装的打印驱动程序并将打印作业转换为打印机可以理解的命令。
客户端后台处理程序将打印作业提交给网络打印服务器
网络打印后台处理程序 ( )在位于以下位置的打印服务器上
spoolsv.exe
创建一组文件 (SHD
& ):SPL
C:\Windows\System32\spool\PRINTERS
网络打印后台处理程序以打印机能够处理的速度逐页地将打印作业发送到打印机。
网络打印清理队列,删除这两个文件。
如果您可以潜得更深,请这样做......但请不要深入马里亚纳海沟。=)
在多用户环境中,我注意到每个用户都有自己的 splWOW64,而系统运行spoolsv.exe
。我知道 splWOW64 由 32 位应用程序用于打印,而spoolsv.exe
x64 位计算机上的 处理 64 位应用程序的打印。用户下运行的 splWOW64 是否与 spoolsv.exe 交互?
答案1
我想我可以帮忙。
用一篇简单的文章来解释打印几乎是不可能的。我在 ThinPrint 工作了十多年,仍然能发现新的东西。不过,去年我有机会在一次会议上就这个话题发表演讲。标题是“低级打印分析:深入探究 Windows 打印”
您可以在这里观看录音: http://www.brianmadden.com/video/BriForum-2015-Low-Level-Print-Analysis-A-Deep-Dive-Into-Windows-Printing
如果您有兴趣,我还可以与您分享我的幻灯片。
哦,回答你的问题:是的,splWOW64 与 spoolsv 交互。它基本上是 spoolsv 提供的 API 接口的包装器。
如果您决定使用第三方解决方案解决 Citrix 打印问题,请查看我们的 ThinPrint 软件。该软件专为避免 Citrix 打印而开发,我们有专家支持。