打印流程分析笔记

这篇笔记详细分析了Windows系统的本地和远程打印流程,包括应用程序如何通过GDI引擎与打印提供者交互,本地打印提供者如何处理EMF格式,并通过打印处理器转换为RAW格式。同时,还介绍了远程打印过程中数据如何从本地传递到远程,以及远端如何调用打印处理器完成打印任务。
摘要由CSDN通过智能技术生成

本地打印的流程:

 

1.    应用程序

2.   GDI引擎

3.   本地打印提供者(localspl.dll

4.  如果是EMF格式交给EMF打印处理器(winprint.dll)转成RAW格式下面是到打印处理的函数栈

063df19c73d542b7 05f3e188 063df30c 00000000winprint!PrintDocumentOnPrintProcessor(FPO: [Non-Fpo])

063df1bc 6149c35c 0663737c063df30c 00b06a4aPrintIsolationProxy!sandbox::PrintProcessor::PrintDocThroughPrintProcessor+0x49(FPO: [Non-Fpo])

063df228 6149b052 00ad6744 063df30c00b06a4alocalspl!sandbox::PrintProcessorExecuteObserver::PrintDocThroughPrintProcessor+0x84(FPO: [Non-Fpo])

063df244 61499d20 00ad6744 063df30c00b06a4alocalspl!sandbox::PrintProcessorAdapterImpl::PrintDocumentOnPrintProcessor+0x27(FPO: [Non-Fpo])

063df270 61460400 00aa3960 063df30c0018c938localspl!sandbox::PrintProcessorAdapter::PrintDocumentOnPrintProcessor+0x77(FPO: [Non-Fpo])

063df950 614615fe 00aa4f20063df970 00000000 localspl!PrintDocumentThruPrintProcessor+0x3bd (FPO:[Non-Fpo])

063dfbb0 76161174 00aa4f20063dfbfc 77d1b3f5localspl!PortThread+0x41c(FPO: [Non-Fpo])

063dfbbc 77d1b3f5 00aa4f20 70896cd8 00000000 kernel32!BaseThreadInitThunk+0xe(FPO: [Non-Fpo])

063dfbfc 77d1b3c8614611e2 00aa4f2000000000 ntdll!__RtlUserThreadStart+0x70 (FPO: [Non-Fpo])

063dfc14 00000000 614611e2 00aa4f2000000000 ntdll!_RtlUserThreadStart+0x1b (FPO: [Non-Fpo])

5.   本地打印提供者SplWriterPrinter函数

ChildEBP RetAddr  Args toChild             

063de2f000db9295 05f3cba8 01b70000 00002b64 localspl!SplWritePrinter(FPO: [Non-Fpo])

063de308 00da8f7e 05f20620 01b70000 00002b64spoolsv!WritePrinter+0x2c (FPO:[Non-Fpo])

063de324 738bc27a 05f20620 01b70000 00002b64spoolsv!YWritePrinter+0x2b (FPO: [Non-Fpo])

063de374 738c150e003991f4 000000007b03d19b winspool!FlushBuffer+0xee (FPO: [Non-Fpo])

063de3c46d57cf9f 003991f4 00000000 00000002 winspool!GetJobW+0x36 (FPO:[Non-Fpo])

WARNING: Stack unwind information not available. Following frames maybe wrong.

063de57c6d57de7e 00d40008 063de598 00d40008 hpvpldrv09+0xcf9f

063de5a4 6d577f25 00d40008 06c30034 ffffffff hpvpldrv09+0xde7e

063de5c064e5ee13 00d40008 06c30034ff7fffff hpvpldrv09+0x7f25

063de5d8 64e5fcc4 00d40008 06c3003406499738 UNIDRV!DrvEnableDriver+0x5401

063de5f8 763d1a16 00d40008 06c30034 063def08 UNIDRV!DrvEnableDriver+0x62b2

063de630 77e43829 063dee98 063de648 00000004GDI32!GdiPrinterThunk+0x753 (FPO: [Non-Fpo])

063dee80 77d0642e 063dee98 0000001c063def20 USER32!__ClientPrinterThunk+0x28 (FPO: [Non-Fpo])

063deeb0 76406825 763f7c2cb42103eb 00000000 ntdll!KiUserCallbackDispatcher+0x2e (FPO: [0,0,0])

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值