共用方式為


WritePrinter 函式

WritePrinter 函式會通知列印後台處理程式,數據應該寫入指定的印表機。

備註

WritePrinter 僅支援 GDI 列印,不得用於 XPS 列印。 如果您的列印作業使用 XPS 或 OpenXPS 列印路徑,請使用 XPS 列印 API。 不支援使用 WritePrinter 將 XPS 或 OpenXPS 列印作業傳送至多任務緩衝處理程式,而且可能會導致未決定的結果。

語法

BOOL WritePrinter(
  _In_  HANDLE  hPrinter,
  _In_  LPVOID  pBuf,
  _In_  DWORD   cbBuf,
  _Out_ LPDWORD pcWritten
);

參數

hPrinter [in]

印表機的句柄。 使用 OpenPrinterAddPrinter 函式來擷取印表機句柄。

pBuf [in]

位元組陣列的指標,其中包含應該寫入印表機的數據。

cbBuf [in]

陣列的大小,以位元組為單位。

pcWritten [out]

值的指標,接收寫入印表機的數據位元組數。

返回值

如果函式成功,則傳回值是非零值。

如果函式失敗,傳回值為零。

備註

備註

這是封鎖或同步函式,可能不會立即傳回。 此函式傳回的速度取決於運行時間因素,例如網路狀態、列印伺服器組態,以及撰寫應用程式時難以預測的印表機驅動程序實作因素。 從管理與使用者介面互動的線程呼叫此函式,可能會使應用程式看起來沒有回應。

列印作業的順序如下所示:

  1. 若要開始列印作業,請呼叫 StartDocPrinter
  2. 若要開始每個頁面,請呼叫 StartPagePrinter
  3. 若要將數據寫入頁面,請呼叫 WritePrinter
  4. 若要結束每個頁面,請呼叫 EndPagePrinter
  5. 視需要針對多個頁面重複 2、3 和 4。
  6. 若要結束列印作業,請呼叫 EndDocPrinter

當高階檔(例如 Adobe PDF 或 Microsoft Word 檔案)或其他印表機資料 (例如 PCL、PS 或 HPGL) 直接傳送至印表機時,檔中定義的列印設定會優先於 Windows 列印設定。 當傳入 StartDocPrinter 呼叫之 pDocInfo 參數之 DOC_INFO_1 結構的 pDatatype 成員值為 “RAW” 時,文件輸出必須完整描述硬體所了解語言中的 DEVMODE 樣式列印作業設定。

在 Windows XP 之前的 Windows 版本中,當多任務緩衝處理檔案中的頁面超過大約 350 MB 時,它可能無法列印,而不會傳送錯誤訊息。 例如,列印大型EMF檔案時可能會發生這種情況。 Windows XP 之前的 Windows 版本頁面大小限制取決於許多因素,包括可用的虛擬記憶體數量、呼叫進程所配置的記憶體數量,以及進程堆積中的片段量。 在 Windows XP 和更新版本的 Windows 中,EMF 檔案的大小必須是 2 GB 或更少。 如果使用 WritePrinter 來寫入非 EMF 數據,例如印表機就緒 PDL,檔案的大小只會受限於可用的磁碟空間。

範例

如需使用此函式的範例程式,請參閱 How To: Print Using the GDI Print API

需求

要求 價值觀
最低支援的用戶端
Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限傳統型應用程式]
頁首
Winspool.h (包括 Windows.h)
圖書館
Winspool.lib
DLL
Spoolss.dll

另請參閱

列印

列印後台處理程式 API 函式

EndDocPrinter

EndPagePrinter

OpenPrinter

StartDocPrinter

開始頁面打印機