点选打印 DLL

可以选择性地通过将其名称与 模块 注册表值关联,来提供特殊的 Point and Print DLL。 此 DLL 必须导出以下两个函数:

GenerateCopyFilePaths
此函数由服务器的后台处理程序和客户端的后台处理程序调用,可用于修改 目录 注册表值指定的目录路径。 可以修改源路径(服务器)或目标路径(在客户端上)或两者。

SpoolerCopyFileEvent
此函数也由服务器的后台处理程序和客户端的后台处理程序调用,接收一个事件代码,指示某些连接相关的打印机事件的发生。

点和打印 DLL 不需要仅导出这些函数。 例如,Mscms.dll(由Microsoft的 ICM 组件使用)也导出一组 ICM API 函数。

请注意,除了指定导出 GenerateCopyFilePathsSpoolerCopyFileEvent 的 Point and Print DLL 之外,还可以指定其他 DLL,或替代该 DLL。 为此,请将 DLL 文件名分配给 文件 注册表项而不是 模块 注册表项。 (请参阅 安装 Queue-Specific 文件)。

安装应用程序通过调用 SetPrinterDataEx 将 DLL 的名称置于服务器的注册表中后,所有对 SetPrinterDataEx 的后续调用都会导致调用 DLL 的 SpoolerCopyFileEvent 函数,并提供了COPYFILE_EVENT_SET_PRINTER_DATAEX的事件代码。

文件 注册表项下列出的文件(请参阅 “安装 Queue-Specific 文件”不同,客户端连接到打印机时,不会将点和打印 DLL 从打印服务器复制到客户端。 建立与打印服务器连接时,DLL 被认为已经存在于客户端。 因此,DLL 可用于与点和打印功能无关的其他用途。

在客户端上安装 Point 和 Print DLL 的一种方法是在 打印机 INF 文件中 指定其名称作为依赖文件,以便在 下载驱动程序特定文件时将该文件复制到客户端的驱动程序目录。