StartDocPrinter 函数

StartDocPrinter 函数通知打印后台处理程序文档将进行假脱机打印。

语法

DWORD StartDocPrinter(
  _In_ HANDLE hPrinter,
  _In_ DWORD  Level,
  _In_ LPBYTE pDocInfo
);

parameters

hPrinter [in]

打印机的句柄。 使用 OpenPrinterAddPrinter 函数检索打印机句柄。

级别 [in]

pDocInfo 指向的结构的版本。 此值必须为 1。

pDocInfo [in]

指向描述要打印的文档 的DOC_INFO_1 结构的指针。

返回值

如果函数成功,则返回值标识打印作业。

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

注解

注意

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

打印作业的典型顺序如下:

  1. 若要开始打印作业,请调用 StartDocPrinter
  2. 若要开始每个页面,请调用 StartPagePrinter
  3. 若要将数据写入页面,请调用 WritePrinter
  4. 若要结束每一页,请调用 EndPagePrinter
  5. 根据需要对任意多页重复 2、3 和 4。
  6. 若要结束打印作业,请调用 EndDocPrinter

请注意,调用 StartPagePrinterEndPagePrinter 可能没有必要,例如,如果打印数据类型包含页面信息。

当后台打印文件中的页面超过大约 350 MB 时,它可能无法打印,也不会发送错误消息。 例如,打印大型 EMF 文件时可能会发生这种情况。 页面大小限制取决于许多因素,包括可用虚拟内存量、调用进程分配的内存量以及进程堆中的碎片量。

示例

有关使用此函数的示例程序,请参阅 如何:使用 GDI 打印 API 进行打印

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows 2000 Server [仅限桌面应用]
标头
Winspool.h (包括 Windows.h)

Winspool.lib
DLL
Winspool.drv
Unicode 和 ANSI 名称
StartDocPrinterW (Unicode) 和 StartDocPrinterA (ANSI)

请参阅

AddJob

DOC_INFO_1

DOC_INFO_2

EndDocPrinter

EndPagePrinter

OpenPrinter

打印

打印后台处理程序 API 函数

StartDocPrinter

StartPagePrinter

WritePrinter