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]
-
印表機的控制碼。 使用 OpenPrinter 或 AddPrinter 函式來擷取印表機控制碼。
-
pBuf [in]
-
位元組陣列的指標,其中包含應該寫入印表機的資料。
-
cbBuf [in]
-
陣列的大小,以位元組為單位。
-
pcWritten [out]
-
值的指標,這個值會接收寫入印表機的資料位元組數。
傳回值
如果函式成功,則傳回值是非零值。
如果此函式失敗,則傳回值為零。
備註
注意
這是封鎖或同步函式,可能不會立即傳回。 此函式傳回的速度取決於執行時間因素,例如網路狀態、列印伺服器設定,以及撰寫應用程式時難以預測的印表機驅動程式實作因素。 從管理與使用者介面互動的執行緒呼叫此函式,可能會使應用程式看起來沒有回應。
列印工作的順序如下:
- 若要開始列印工作,請呼叫 StartDocPrinter。
- 若要開始每個頁面,請呼叫 StartPagePrinter。
- 若要將資料寫入頁面,請呼叫 WritePrinter。
- 若要結束每個頁面,請呼叫 EndPagePrinter。
- 視需要針對多個頁面重複 2、3 和 4。
- 若要結束列印工作,請呼叫 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 檔案的大小必須小於 2GB。 如果使用 WritePrinter 來寫入非 EMF 資料,例如印表機就緒 PDL,檔案的大小只會受限於可用的磁碟空間。
範例
如需使用此函式的範例程式,請參閱 How To: Print Using the GDI Print API。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 |
Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 |
Windows 2000 Server [僅限桌面應用程式] |
標頭 |
|
程式庫 |
|
DLL |
|