AddJob 函数

AddJob 函数将打印作业添加到打印作业列表中,打印后台处理程序可以计划该作业。 函数检索可用于存储作业的文件的名称。

注意

在 Windows 8 及更高版本的操作系统中,我们不建议直接使用 AddJob,因为在某些情况下 (例如使用 File: 或 PORTPROMPT:) 打印到队列,其中 AddJob 将失败。 建议改用 GDI 打印 APIXPS 打印 APIStartDocPrinterWindows.Graphics.Printing 命名空间中的相应方法,具体取决于打印方案。

如果尝试使用 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 指向的缓冲区中的打印作业信息数据结构的版本。 将此参数设置为 1。

pData [out]

指向接收 ADDJOB_INFO_1 数据结构和路径字符串的缓冲区的指针。

cbBuf [in]

pData 指向的缓冲区的大小(以字节为单位)。 缓冲区必须足够大,才能包含 ADDJOB_INFO_1 结构和路径字符串。

2011 年 [out]

指向变量的指针,该变量接收 ADDJOB_INFO_1 数据结构和路径字符串的总大小(以字节为单位)。 如果此值小于或等于 cbBuf 且函数成功,则这是写入 pData 指向的缓冲区的实际字节数。 如果此数字大于 cbBuf,则缓冲区太小,必须再次调用该函数,其缓冲区大小至少与 *cbNeeded 一样大。

返回值

如果函数成功,则返回值为非零值。

如果函数失败,则返回值为零。

注解

注意

这是一个阻塞或同步函数,可能不会立即返回。 此函数的返回速度取决于运行时因素,例如网络状态、打印服务器配置以及编写应用程序时难以预测的打印机驱动程序实现因素。 从管理与用户界面交互的线程调用此函数可能会使应用程序看起来无响应。

可以调用 CreateFile 函数以打开由 ADDJOB_INFO_1 结构的 Path 成员指定的后台打印文件,然后调用 WriteFile 函数以向其写入打印作业数据。 完成后,调用 ScheduleJob 函数以通知打印后台处理程序,打印作业现在可以由后台处理程序计划打印。

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
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