xiaoiunknown
驱动牛犊
驱动牛犊
  • 注册日期2003-01-07
  • 最后登录2004-05-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:2589回复:9

请教关于打印机监视的问题。

楼主#
更多 发布于:2003-08-19 09:04
我要监视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差不多,只是要实现的接口不同,待处理的地方也不同。

以上只是我的理解,有一些错误的地方还请指出!
xiaoiunknown
驱动牛犊
驱动牛犊
  • 注册日期2003-01-07
  • 最后登录2004-05-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2003-08-19 09:05
把帖子全部看了一遍,没找到实质性的东西。
xiaoiunknown
驱动牛犊
驱动牛犊
  • 注册日期2003-01-07
  • 最后登录2004-05-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2003-08-19 09:47

假如那位朋友能提供一个完整的打印机监视的代码,那就太好了,我知道我的要求有点过份,但说一下总比不说好,呵呵!资源方面的信息也可以!

项目不怎么紧,但尽快解决总是好的。

我只是一个入门者,希望大家多多体谅! 谢谢
xiaoiunknown
驱动牛犊
驱动牛犊
  • 注册日期2003-01-07
  • 最后登录2004-05-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于: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 的上面进行,应该效果很好!

LouYongZhi
驱动牛犊
驱动牛犊
  • 注册日期2003-02-09
  • 最后登录2018-05-31
  • 粉丝0
  • 关注0
  • 积分29分
  • 威望22点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2003-08-19 13:57
Processor和Monitor还是不一样的。
添加Monitor使用API:AddMonitor
xiaoiunknown
驱动牛犊
驱动牛犊
  • 注册日期2003-01-07
  • 最后登录2004-05-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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 我觉得难度太大。



xiaoiunknown
驱动牛犊
驱动牛犊
  • 注册日期2003-01-07
  • 最后登录2004-05-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2003-08-19 14:27
致于用
Monitors 来处理,现在我还不考虑,只是觉得它比processor难一些!

欢迎各位一起讨论!
terrificskyfox
驱动小牛
驱动小牛
  • 注册日期2003-03-12
  • 最后登录2014-04-28
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望11点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2003-08-19 21:28
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 的上面进行,应该效果很好!

 


我的理解,通过定制spooler组件来截取打印机数据和在驱动程序中对系统gdi送来的数据进行处理目的是完全不同的,
在打印驱动程序中的处理主要是真正完成gdi的绘制工作,把gdi传来的绘图命令转换为设备可识别的语言,如PCL语言等,
大家写驱动程序主要是为了将绘图命令转换为公司设备使用的语言,比如我们公司的命令集就完全是自己定义的,
不可能采用某个现成的驱动程序;
在spooler组件中截获的数据是已经转换完成的,这个时候对于监控是有意义的,但是对于数据转换已经为时已晚了

简单来说,驱动程序是为了进行命令转换,而spooler组件仅仅是为了截取数据,你选择那种方案来完成要根据你的最终目的选择



[编辑 -  8/19/03 by  terrificskyfox]
xiaoiunknown
驱动牛犊
驱动牛犊
  • 注册日期2003-01-07
  • 最后登录2004-05-14
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2003-08-20 14:04
terrificskyfox兄:非常感谢你的回复!

因为一些原因,我现在又有别的工作要做,可能近段又没有时间研究这个东西了,至于打印的流程,我还没有跟踪过,以上所说的都只是依照DDK2003所说的。

不过等忙完了这阵,我一定会把这个东西研究一下,到时可能又有一些问题要和你讨论了。

假如你不介意的话,希望和你保持联系。
QQ:112660057, MSN:iunknown_com_951@hotmail.com

我QQ用得很少!
祝你健康、快乐!
terrificskyfox
驱动小牛
驱动小牛
  • 注册日期2003-03-12
  • 最后登录2014-04-28
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望11点
  • 贡献值1点
  • 好评度10点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2003-08-20 21:38
呵呵,没问题
不过我平时用的也不多
游客

返回顶部