SNA 打印服务器数据筛选器 API

配置打印数据筛选器 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