Поделиться через


Функция GenerateCopyFilePaths (winsplp.h)

Функция GenerateCopyFilePath s и печати библиотеки DLL используется для изменения путей к источнику и назначению, используемых спулерами печати при копировании файлов, связанных с очередью печати, в клиент печати.

Синтаксис

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

Указывает, что функция вызывается spooler клиента.

COPYFILE_FLAG_SERVER_SPOOLER

Указывает, что функция вызывается spooler сервера.

Возвращаемое значение

Если операция выполнена успешно, функция должна возвращать ERROR_SUCCESS. В противном случае он должен возвращать код ошибки, определенный в winerror.h.

Замечания

Все библиотеки DLL точки и печати должны экспортировать функцию GenerateCopyFilePaths, которая вызывается spooler печати. Его целью является разрешение библиотеки DLL "Точка" и "Печать" изменять путь к исходному или целевому каталогу или перед копированием файлов, связанных с очередью печати, с сервера на клиент. (Файлы копируются при подключении клиента к серверу печати. Полное описание шагов, связанных с созданием подключения "Точка и печать", см. в разделе поддержка точки и печати.)

Библиотека DLL "Точка" и "Печать" выполняется как на сервере, так и на клиенте. Функция GenerateCopyFilePaths должна проверять аргумент dwFlags, чтобы определить место выполнения.

Как правило, эта функция используется для обеспечения совместимости при выполнении различных версий операционной системы на клиенте и сервере. Например, если функция при выполнении на сервере определяет (считывая структуру SPLCLIENT_INFO_1), что ее операционная система является более новой, чем клиент, она может изменить исходные и конечные пути, чтобы быть совместимыми со старой ОС клиента. С другой стороны, если функция определяет, что операционная система клиента является более новой, чем клиент, она, вероятно, не должна ничего делать на сервере и выполнять изменения при необходимости при выполнении на клиенте.

Аргументы для pszSourceDir и pszTargetDir указывают на буферы, содержащие строки, представляющие текущие пути к исходному и целевому каталогу. Если необходимо внести изменения в любую из этих строк, функция должна внести изменения в предоставленные буферы. Максимальная допустимая длина строки указывает на аргументы pcchSourceDirSize и pcchTargetDirSize.

Если изменения исходного или целевого каталогов не требуются, функция должна просто вернуть ERROR_SUCCESS.

Требования

Требование Ценность
целевая платформа Всеобщий
заголовка winsplp.h (include Winsplp.h)
библиотеки Mscms.lib
DLL Mscms.dll

См. также

SpoolerCopyFileEvent