阅读:2589回复:9
请教关于打印机监视的问题。
我要监视LAN中的打印机的工作情况,具体内容大概为:网络上那台机器发送的打印要求,及其执行情况等。
把上面捕获到的信息保存为日志,数据格式大概为时间,内容等信息,方便今后进行审计。 当然,为了今后产品的可扩展性,我希望所采用的技术能够捕获到更多信息,note:上面我描述的需求是不完整的。 我大致看了一下2003DDK文档,有些地方是理解得比较差的,希望你们能给予指点: 我现在还只想到3种方法: 1、替换winspool.drv,但这种方法不可取。假如客户为这个DLL打了个升级包,那么问题就来了。 2、做print Procesors, 看了DDK文档,只有几个引出函数需要编写:ClosePrintProcessor ControlPrintProcessor EnumPrintProcessorDatatypes GetPrintProcessorCapabilities OpenPrintProcessor PrintDocumentOnPrintProcessor 但需针对不同的APP传来的数据,如:EMF、RAW、TEXT进行处理,我现在不知是否可以像filter driver一样,可以重用localspl.dll中针对这些格式的export funcation. 现在我还不知道是否有EMF等之外的别的数据格式。需要进行处理。 3、针对Port Monitors or Language Monitors 我现在还只看了一遍,觉得和做print processors差不多,只是要实现的接口不同,待处理的地方也不同。 以上只是我的理解,有一些错误的地方还请指出! |
|
沙发#
发布于:2003-08-19 09:05
把帖子全部看了一遍,没找到实质性的东西。
|
|
板凳#
发布于:2003-08-19 09:47
假如那位朋友能提供一个完整的打印机监视的代码,那就太好了,我知道我的要求有点过份,但说一下总比不说好,呵呵!资源方面的信息也可以! 项目不怎么紧,但尽快解决总是好的。 我只是一个入门者,希望大家多多体谅! 谢谢 |
|
地板#
发布于:2003-08-19 11:27
terrificskyfox兄:
引用: 如果你在98下用基于unidriv的方式,那么你的打印驱动中export的函数都是把具体的处理工作交给unidriv的函数来做, 你可以在把工作交给unidriv之前对系统传给打印驱动的数据做转换,例如output函数中。 也可以对gdi操作不干预,设置一个fnDump的callback函数,把每一个band的数据输出到一个文件中保存, 最简单的方式就时保存在一个bitmap中,98ddk中有两个简单的例子:bitmap和cbitmap,你可以看看 我对WIN98不了解,现在只想先解决WIN2000的问题,但98肯定需要考虑,请问WIN98下只有这个方法吗,可不可以用我上面的方法,因为在2000下,挡截打印机数据,按照DDK2003的流程图, 在localspl.dll 和win32spl.dll 的上面进行,应该效果很好! |
|
地下室#
发布于:2003-08-19 13:57
Processor和Monitor还是不一样的。
添加Monitor使用API:AddMonitor |
|
5楼#
发布于:2003-08-19 14:25
是的,DDK中有一张图,Printer Graphics DLL是经过writeprint的
source:Introduction to Printer Graphics DLLs of DDK2003 我还没有TEST过,是否可以做一个PROCESS 用来捕获到屡non EMF格式的数据。 但依照DDK Document, Language Monitors and Port Monitors来捕获所有数据是没有问题的。致于有用那个Universal Printer Driver Or Other Printer Driver 我觉得难度太大。 |
|
6楼#
发布于:2003-08-19 14:27
致于用
Monitors 来处理,现在我还不考虑,只是觉得它比processor难一些! 欢迎各位一起讨论! |
|
7楼#
发布于:2003-08-19 21:28
terrificskyfox兄: 我的理解,通过定制spooler组件来截取打印机数据和在驱动程序中对系统gdi送来的数据进行处理目的是完全不同的, 在打印驱动程序中的处理主要是真正完成gdi的绘制工作,把gdi传来的绘图命令转换为设备可识别的语言,如PCL语言等, 大家写驱动程序主要是为了将绘图命令转换为公司设备使用的语言,比如我们公司的命令集就完全是自己定义的, 不可能采用某个现成的驱动程序; 在spooler组件中截获的数据是已经转换完成的,这个时候对于监控是有意义的,但是对于数据转换已经为时已晚了 简单来说,驱动程序是为了进行命令转换,而spooler组件仅仅是为了截取数据,你选择那种方案来完成要根据你的最终目的选择 [编辑 - 8/19/03 by terrificskyfox] |
|
8楼#
发布于:2003-08-20 14:04
terrificskyfox兄:非常感谢你的回复!
因为一些原因,我现在又有别的工作要做,可能近段又没有时间研究这个东西了,至于打印的流程,我还没有跟踪过,以上所说的都只是依照DDK2003所说的。 不过等忙完了这阵,我一定会把这个东西研究一下,到时可能又有一些问题要和你讨论了。 假如你不介意的话,希望和你保持联系。 QQ:112660057, MSN:iunknown_com_951@hotmail.com 我QQ用得很少! 祝你健康、快乐! |
|
9楼#
发布于:2003-08-20 21:38
呵呵,没问题
不过我平时用的也不多 |
|