GenerateCopyFilePaths 函式 (winsplp.h)

當列印後台處理程式將列印佇列關聯的檔案複製到列印用戶端時,會使用 Point 和 Print 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

呼叫端提供的字串指標,代表為登錄中伺服器 之 Directory 專案提供的值。 如需詳細資訊,請參閱 印表機安裝期間支援點和列印

[in] pSplClientInfo

呼叫端提供的 SPLCLIENT_INFO_1 結構的指標。

[in] dwLevel

呼叫端提供的值,指出 pSplClientInfo 所指向之結構的層級編號。 必須是 1。

[in, out] pszSourceDir

針對輸入,會收到字串的呼叫端提供的指標,此字串代表要從中複製檔案的伺服器名稱, (包括伺服器名稱) 。

針對輸出,函式可以修改此字串。

[in, out] pcchSourceDirSize

呼叫端提供的位址,其中包含 pszSourceDir 指向之緩衝區的長度。 (請注意,這是緩衝區長度,而不是字串 length.)

[in, out] pszTargetDir

針對輸入,接收字串的呼叫端提供的指標,此字串代表要複製檔案的用戶端目錄路徑。 適用的規則如下:

  • 在伺服器上呼叫函式時,此路徑會相對於 PRINT$。
  • 在用戶端上呼叫 函式時,字串會包含完整的路徑。
針對輸出,函式可以修改此字串。

[in, out] pcchTargetDirSize

呼叫端提供的位址,其中包含 pszTargetDir 所指向緩衝區的長度。 (請注意,這是緩衝區長度,而不是字串 length.)

[in] dwFlags

呼叫端提供的旗標。 可以是下列其中一項:

COPYFILE_FLAG_CLIENT_SPOOLER

表示函式正由用戶端的多任務緩衝處理程式呼叫。

COPYFILE_FLAG_SERVER_SPOOLER

表示伺服器多任務緩衝處理程式正在呼叫函式。

傳回值

如果作業成功,函式應該會傳回 ERROR_SUCCESS。 否則,它應該會傳回 winerror.h 中定義的錯誤碼。

備註

所有 Point 和 Print DLL 都必須匯出 GenerateCopyFilePaths 函式,由列印後台處理程式呼叫。 其目的是允許 Point 和 Print DLL 修改來源或目的地目錄路徑,或兩者在列印後台處理程式將列印佇列關聯的檔案從伺服器複製到用戶端之前。 (客戶端連線到列印伺服器時,會複製這些檔案。如需建立 Point 和 Print 連線相關步驟的完整描述,請參閱 支援點和 Print.)

點和列印 DLL 會在伺服器和用戶端上執行。 GenerateCopyFilePaths 函式應該檢查 dwFlags 自變數,以判斷其執行位置。

一般而言,當不同版本的操作系統在用戶端和伺服器上執行時,會使用此函式來提供相容性。 例如,如果函式在伺服器上執行時,讀取SPLCLIENT_INFO_1結構來判斷 (,) 其操作系統比用戶端還新,就可以修改來源和目的地路徑,使其與用戶端的舊版OS相容。 另一方面,如果函式判斷用戶端的操作系統比用戶端還新,它應該不會在伺服器上執行任何動作,並視需要在用戶端上執行修改。

pszSourceDirpszTargetDir 參數的自變數會指向緩衝區,其中包含代表目前來源和目的地目錄路徑的字串。 如果需要修改上述任一字串,函式應該在提供的緩衝區中修改。 pcchSourceDirSizepcchTargetDirSize自變數會指向允許的最大字串長度。

如果不需要對來源或目的地目錄進行修改,函式應該只會傳回 ERROR_SUCCESS

規格需求

需求
目標平台 Universal
標頭 winsplp.h (包含 Winsplp.h)
程式庫 Mscms.lib
Dll Mscms.dll

另請參閱

SpoolerCopyFileEvent