AddJob 函式

AddJob函式會將列印工作新增至列印工作清單,而列印多工緩衝處理器可以排程。 函式會擷取可用來儲存作業的檔案名。

注意

在Windows 8和更新版本的作業系統中,我們不建議直接使用AddJob,因為在某些情況下 (例如使用 File: 或 PORTPROMPT:) AddJob失敗的佇列列印。 相反地,建議您根據列印案例,從Windows.Graphics.Printing命名空間使用GDI 列印 APIXPS 列印 APIStartDocPrinter或適當的方法。

如果您嘗試使用 File:PORTPROMPT:列印至佇列, AddJob 會傳回NOT_SUPPORTED錯誤。

語法

BOOL AddJob(
  _In_  HANDLE  hPrinter,
  _In_  DWORD   Level,
  _Out_ LPBYTE  pData,
  _In_  DWORD   cbBuf,
  _Out_ LPDWORD pcbNeeded
);

參數

hPrinter [in]

指定列印工作印表機的控制碼。 這必須是設定為多工緩衝印表機的本機印表機。 如果 hPrinter 是遠端印表機連線的控制碼,或印表機設定為直接列印, AddJob 函式會失敗。 使用 OpenPrinterAddPrinter 函式來擷取印表機控制碼。

層級 [in]

函式儲存至 pData所指向之緩衝區的列印工作資訊資料結構版本。 將此參數設定為一個。

pData [out]

接收 ADDJOB_INFO_1 資料結構和路徑字串之緩衝區的指標。

cbBuf [in]

pData所指向之緩衝區的大小,以位元組為單位。 緩衝區必須夠大,才能包含 ADDJOB_INFO_1 結構和路徑字串。

azureNeeded [out]

變數的指標,可接收資料結構的總大小,以位元組為單位 ADDJOB_INFO_1, 加上路徑字串。 如果此值小於或等於 cbBuf 且函式成功,則這是寫入 pData所指向之緩衝區的實際位元組數目。 如果這個數位大於 cbBuf,則緩衝區太小,而且您必須再次呼叫函式,且緩衝區大小至少等於 *cbNeeded

傳回值

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

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

備註

注意

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

您可以呼叫CreateFile函式來開啟由 ADDJOB_INFO_1結構的Path成員指定的多工緩衝處理檔案,然後呼叫WriteFile函式,將列印工作資料寫入其中。 完成之後,請呼叫 ScheduleJob 函式來通知列印多工緩衝處理器,列印工作現在可以由多工緩衝處理常式排程列印。

規格需求

需求
最低支援的用戶端
Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限傳統型應用程式]
標頭
Winspool.h (包含 Windows.h)
程式庫
Winspool.lib
DLL
Winspool.drv
Unicode 與 ANSI 名稱
AddJobW (Unicode) 和 AddJobA (ANSI)

另請參閱

ADDJOB_INFO_1

CreateFile

GDI 列印 API

列印

列印多工緩衝處理器 API 函式

OpenPrinter

ScheduleJob

StartDocPrinter

Windows.Graphics.Printing

WriteFile

XPS 列印 API