Функция AddJob

Функция AddJob добавляет задание печати в список заданий печати, которые можно запланировать с помощью очереди печати печати. Функция извлекает имя файла, который можно использовать для хранения задания.

Примечание

В Windows 8 и более поздних версиях операционных систем не рекомендуется напрямую использовать AddJob, так как существуют случаи (например, печать в очередь с помощью file: или PORTPROMPT:). где AddJob завершится ошибкой. Вместо этого рекомендуется использовать API печати GDI, API печати XPS, StartDocPrinter или соответствующий метод из пространства имен Windows.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 завершается ошибкой . Используйте функцию OpenPrinter или AddPrinter , чтобы получить дескриптор принтера.

Level [in]

Версия структуры данных задания печати, которая сохраняется функцией в буфере, на который указывает pData. Задайте для этого параметра значение one.

pData [out]

Указатель на буфер, который получает ADDJOB_INFO_1 структуру данных и строку пути.

cbBuf [in]

Размер (в байтах) буфера, на который указывает pData. Буфер должен быть достаточно большим, чтобы содержать структуру ADDJOB_INFO_1 и строку пути.

pcbNeeded [ out]

Указатель на переменную, получающую общий размер структуры данных ADDJOB_INFO_1 в байтах, а также строку пути. Если это значение меньше или равно cbBuf и функция выполняется успешно, это фактическое число байтов, записанных в буфер, на который указывает pData. Если это число больше , чем cbBuf, буфер слишком мал, и необходимо снова вызвать функцию с размером буфера не ниже *pcbNeeded.

Возвращаемое значение

Если функция выполнена успешно, возвращаемое значение будет ненулевым.

Если функция выполняется неудачно, возвращается нулевое значение.

Комментарии

Примечание

Это блокирующая или синхронная функция, возвращаемая не сразу. Скорость возврата этой функции зависит от факторов времени выполнения, таких как состояние сети, конфигурация сервера печати и факторы реализации драйвера принтера, которые трудно предсказать при написании приложения. Вызов этой функции из потока, который управляет взаимодействием с пользовательским интерфейсом, может привести к тому, что приложение не отвечает.

Можно вызвать функцию CreateFile , чтобы открыть файл очереди, заданный элементом Path структуры ADDJOB_INFO_1 , а затем вызвать функцию WriteFile , чтобы записать в нее данные задания печати. После этого вызовите функцию ScheduleJob , чтобы уведомить диспетчер очереди печати печати о том, что теперь диспетчер очереди печати может запланировать задание печати.

Требования

Требование Значение
Минимальная версия клиента
Windows 2000 Professional [только классические приложения]
Минимальная версия сервера
Windows 2000 Server [только классические приложения]
Заголовок
Winspool.h (включая Windows.h)
Библиотека
Winspool.lib
DLL
Winspool.drv
Имя в кодировке Юникод и ANSI
AddJobW (Юникод) и AddJobA (ANSI)

См. также раздел

ADDJOB_INFO_1

CreateFile

API печати GDI

Вывод на печать

Функции API очереди печати принтера

OpenPrinter

ScheduleJob

StartDocPrinter

Windows.Graphics.Printing

WriteFile

API печати XPS