如何找到启用后台打印文件池,即使对于一个给定的ID作业的假脱机文件?(How do I find t

2019-08-01 10:00发布

我想对于一个给定的Windows打印作业缓冲数据复制到任意位置在磁盘上。

我从打印作业的作业ID 打印后台处理程序API 。 我知道这工作已经完成后台打印。 我知道以前我有时间去完成任何我需要做的工作不会被删除。

如果文件池被禁用,我可以通过查看与格式“xxxxx.spl”,其中xxxxx是填充0作业ID文件后台打印目录做到这一点。

我怎样才能做到这一点,如果启用了文件池?

我会很高兴,如果有是采取了作业ID和返回缓冲数据流的方法,但在这一点上似乎不太可能。 据说类似的东西可能会使用可以OpenPrinter为文献记载“PrinterName的,工作XXXX”和ReadPrinter 这里 ,但到目前为止,我还没有能够得到它的工作 ,即使我做它看起来像它加载数据到内存,我不知道这将如何与大型后台文件工作(> 1 GB是不寻常的)。

我的第二个喜好而定了这样的ID通过,并取回与磁盘上的假脱机数据文件的位置(不管文件池的设置)。

我的第三个优先将汇集文件(“FPyyyyy.spl”)映射到作业ID这是一种方式。

是否有任何的这些可行的,或没有任何人有关于如何解决这个问题的一个更好的主意吗?

(编辑补充,因为它是不明确的,我们都知道这个选项):我们的底牌是要求我们的客户通过编辑每台打印机的设置注册表禁用后台打印文件池,但我们更希望避免这种情况。

Answer 1:

我想通了,为什么我要调用OpenPrinter是失败,我已经成功地读取使用缓冲数据OpenPrinterReadPrinter ,这很好地解决了我们的问题。

我还是会奖励赏金给任何人谁更好的解决方案出现,虽然。



Answer 2:

你读过吗?

http://www.undocprint.org/winspool/spool_files

它似乎有你需要的一切:)

特别To Turn Off Spool File Pooling on a Per Printer Queue-Basis

也有这篇文章的假脱机文件的格式http://www.codeproject.com/Articles/9720/The-Windows-NT-print-spool-shadow-file-format然而,但似乎你已经知道的格式它可能不会有任何帮助。



文章来源: How do I find the spool file for the job with a given ID even when spool file pooling is enabled?