配置打印数据筛选器 DLL 的路径。 此 DLL 由所有主动使用主机打印服务的会话使用。 但是,打印数据筛选器 DLL 可以指定是否要将给定会话的打印数据传递给它。
此 DLL 的入口点如下所示:
PrtFilterAlloc
获取要在其中传递打印数据的数据缓冲区。
PrtFilterFree
指示不再需要以前从 DLL 获取的数据缓冲区,并且 DLL 可以释放为此资源分配的内存。
PrtFilterJobData
允许 DLL 操作打印数据。
PrtFilterJobEnd
通知 DLL 打印作业已结束。
PrtFilterJobStart
通知 DLL 新的打印作业已启动,并使 DLL 能够在作业开始时向打印服务器发送特殊数据。
下面列出了在普通打印作业期间调用的示例序列的说明,以说明通常如何使用这些函数:
启动新的打印作业时调用 PrtFilterStartJob。 DLL 可以返回包含特殊数据的数据缓冲区,该数据将 (特殊横幅页或特殊打印机初始化字符串发送到打印机,例如在打印数据之前) 。
如果在 PrtFilterStartJob 函数中发送了特殊数据,并指示可以释放用于传递特殊数据的数据缓冲区,则调用 PrtFilterFree。
在发送所有打印数据之前,将重复下一个函数调用序列:
调用 PrtFilterAlloc 以分配用于在后续调用 PrtFilterJobData 中传递打印数据的数据缓冲区。
调用 PrtFilterJobData 将打印数据传递给 DLL,以便进行可能的修改。 这使用户 DLL 有机会在将打印机数据发送到打印机之前对其进行操作。 如果要返回的修改的打印数据需要更大的数据缓冲区,或者 DLL 需要使用其他数据缓冲区来返回数据,则 DLL 可能需要分配新的数据缓冲区来返回此数据。 如果使用其他数据缓冲区返回修改的打印数据,DLL 还可以选择释放用于传递传入打印数据的数据缓冲区。 如果 PrtFilterJobData 返回了不同的数据缓冲区,则不会使用指向原始数据缓冲区的指针调用 PrtFilterFree 函数。
调用 PrtFilterFree 以指示 PrtFilterAlloc 为将传入数据传递到 PrtFilterJobData 函数而分配的数据缓冲区可以释放。 如果 PrtFilterJobData 返回了不同的数据缓冲区,则将调用 PrtFilterFree 以指示可以释放 DLL 分配的数据缓冲区,该缓冲区用于在 PrtFilterJobData 函数中返回修改后的打印数据。
处理完所有打印数据后,将执行最后一个序列:
调用 PrtFilterEndJob 以指示打印作业的结束,并允许 DLL 选择 (预告片页返回特殊数据,例如应发送到打印机的) 。
如果在 PrtFilterEndJob 函数中发送了特殊数据,并指示可以释放用于传递特殊数据的数据缓冲区,则调用 PrtFilterFree。