我正在处理我们的 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 交互?
我想我能帮上忙。
在一个简单的帖子中解释打印几乎是不可能的。我已经为 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 打印,我们有专家支持。