从usb打印机记录原始数据并使用打印假脱机程序

时间:2014-08-15 20:09:13

标签: c# printing usb printers print-spooler-api

我知道在here和其他一些地方之前已经提出了类似的问题。 但我想问一些基本概念。

所以,我已经分配了一个项目,我必须制作一个“usb记录器”。该项目的主要功能是在记录器软件上捕获从PC传输到Usb打印机的数据,以便将每个打印输出的原始数据保存到文件中进行记录和分析。

有人告诉我,我可以使用像usbpcap这样的第三方工具,但我建议为什么不直接从打印后台处理程序获取数据。据我所知,print spooler维护着要打印的数据队列。

在我开始研究这个项目之前,我想问几个基本问​​题

1)这种情况下的原始数据是什么?

2)我是否可以通过直接从假脱机程序获取或以其他方式实现此目的。

3)哪一个需要更多的pc资源与usb端口或假脱机程序进行通信?

我只需要完全理解这个域名。 (我将使用C#开发这个项目)

由于

1 个答案:

答案 0 :(得分:0)

如果你需要做的是以原始形式捕获整个输出,最简单的方法是使用端口监视器。端口监视器位于假脱机程序和物理输出设备之间,并将原始数据写入该设备,因此它是捕获此类数据的自然位置。

您需要做的是安装Windows WDK并查看示例端口监视器。只需很少的修改就可以使用它。主要是,除了将数据写入打印机之外,您只需要添加代码将数据写入某个文件。您还需要更改处理注册表的所有代码,因为该示例假定它是默认端口监视器并写入为Windows保留的注册表项。

请注意,版本4打印驱动程序(即Win8)不支持自定义端口监视器。但是,Win8仍然支持v3打印驱动程序,它应该涵盖当前任何打印机。