GenerateCopyFilePaths 函数 (winsplp.h)

点和打印 DLL 的 GenerateCopyFilePaths 函数用于修改打印后台处理程序在将打印队列关联文件复制到打印客户端时使用的源路径和目标路径。

语法

DWORD GenerateCopyFilePaths(
  [in]      LPCWSTR pszPrinterName,
  [in]      LPCWSTR pszDirectory,
  [in]      LPBYTE  pSplClientInfo,
  [in]      DWORD   dwLevel,
  [in, out] LPWSTR  pszSourceDir,
  [in, out] LPDWORD pcchSourceDirSize,
  [in, out] LPWSTR  pszTargetDir,
  [in, out] LPDWORD pcchTargetDirSize,
  [in]      DWORD   dwFlags
);

参数

[in] pszPrinterName

调用方提供的指向表示打印队列名称的字符串的指针。

[in] pszDirectory

调用方提供的指向字符串的指针,表示为服务器 目录 项在注册表中提供的值。 有关详细信息,请参阅 打印机安装过程中的支持点和打印

[in] pSplClientInfo

调用方提供的指向 SPLCLIENT_INFO_1 结构的指针。

[in] dwLevel

调用方提供的值,指示 pSplClientInfo指向的结构的级别号。 必须为 1。

[in, out] pszSourceDir

对于输入,接收一个调用方提供的指向字符串的指针,该字符串表示要从中复制文件的完整服务器目录路径(包括服务器名称)。

对于输出,该函数可以修改此字符串。

[in, out] pcchSourceDirSize

调用方提供的地址,其中包含 pszSourceDir指向的缓冲区长度。 (请注意,这是缓冲区长度,而不是字符串长度。

[in, out] pszTargetDir

对于输入,接收一个调用方提供的指向字符串的指针,该字符串表示要复制到的客户端目录路径。 以下规则适用:

  • 在服务器上调用函数时,此路径相对于 PRINT$。
  • 在客户端上调用函数时,字符串包含完整路径。
对于输出,该函数可以修改此字符串。

[in, out] pcchTargetDirSize

调用方提供的地址,其中包含由 pszTargetDir指向的缓冲区的长度。 (请注意,这是缓冲区长度,而不是字符串长度。

[in] dwFlags

调用方提供的标志。 可以是下列项之一:

COPYFILE_FLAG_CLIENT_SPOOLER

指示函数是由客户端的后台处理程序调用的。

COPYFILE_FLAG_SERVER_SPOOLER

指示服务器后台处理程序正在调用该函数。

返回值

如果作成功,该函数应返回 ERROR_SUCCESS。 否则,它应返回在 winerror.h 中定义的错误代码。

言论

的所有 点和打印 DLL 都必须导出由打印后台处理程序调用的 GenerateCopyFilePaths 函数。 其用途是允许点和打印 DLL 修改源目录路径或目标目录路径,或者在打印后台处理程序将打印队列关联的文件从服务器复制到客户端之前。 (客户端连接到打印服务器时会复制文件。有关创建点和打印连接所涉及的步骤的完整说明,请参阅 支持点和打印。)

点和打印 DLL 在服务器和客户端上执行。 GenerateCopyFilePaths 函数应检查 dwFlags 参数以确定其执行位置。

通常,当不同版本的作系统在客户端和服务器上执行时,此函数用于提供兼容性。 例如,如果函数在服务器上执行时,确定其作系统比客户端更新的作系统(通过读取 SPLCLIENT_INFO_1 结构),则可以修改源路径和目标路径,使其与客户端的旧作系统兼容。 另一方面,如果函数确定客户端的作系统比客户端的作系统更新,则它可能在服务器上执行任何作,并在客户端上执行修改(如有必要)。

pszSourceDirpszTargetDir 参数的参数指向包含表示当前源和目标目录路径的字符串的缓冲区。 如果需要修改其中任一字符串,该函数应在提供的缓冲区中进行修改。 pcchSourceDirSizepcchTargetDirSize 参数指向允许的最大字符串长度。

如果不需要对源目录或目标目录进行任何修改,该函数应只返回 ERROR_SUCCESS

要求

要求 价值
目标平台 普遍
标头 winsplp.h (包括 Winsplp.h)
Mscms.lib
DLL Mscms.dll

另请参阅

SpoolerCopyFileEvent