Функция GetPrinterData

Функция GetPrinterData извлекает данные конфигурации для указанного принтера или сервера печати.

В Windows 2000 и более поздних версиях Windows вызов GetPrinterData эквивалентен вызову GetPrinterDataEx с параметром pKeyName , равным PrinterDriverData.

Синтаксис

DWORD GetPrinterData(
  _In_  HANDLE  hPrinter,
  _In_  LPTSTR  pValueName,
  _Out_ LPDWORD pType,
  _Out_ LPBYTE  pData,
  _In_  DWORD   nSize,
  _Out_ LPDWORD pcbNeeded
);

Параметры

hPrinter [in]

Дескриптор принтера или сервера печати, для которого функция извлекает данные конфигурации. Используйте функцию OpenPrinter, OpenPrinter2 или AddPrinter для получения дескриптора принтера.

pValueName [in]

Указатель на строку, завершающуюся значением NULL, которая определяет извлекаемые данные.

Для принтеров эта строка представляет собой имя значения реестра в разделе PrinterDriverData принтера в реестре.

Для серверов печати эта строка является одной из предопределенных строк, перечисленных в следующем разделе Примечаний.

pType [out]

Указатель на переменную, получающую значение, указывающее тип данных, полученных в pData. Функция возвращает тип, указанный в вызове SetPrinterData или SetPrinterDataEx , который сохранил данные. Присвойте этому параметру значение NULL , если тип данных не нужен.

pData [out]

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

nSize [in]

Размер (в байтах) буфера, на который указывает pData .

pcbNeeded [ out]

Указатель на переменную, которая получает размер данных конфигурации в байтах. Если размер буфера, заданный nSize , слишком мал, функция возвращает ERROR_MORE_DATA, а pcbNeeded указывает требуемый размер буфера.

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

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

Комментарии

Примечание

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

GetPrinterData извлекает данные конфигурации принтера, заданные функцией SetPrinterDataEx или SetPrinterData .

GetPrinterData может активировать вызов Метода GetPrinterDataFromPort в Windows, который может выполнять запись в реестр. В этом случае могут возникнуть побочные эффекты, такие как запуск обновления или обновление события принтера с идентификатором 20 в клиенте, если принтер является общим в сети.

Если hPrinter является дескриптором сервера печати, pValueName может указать одно из следующих предопределенных значений.

Значение Комментарии
SPLREG_ALLOW_USER_MANAGEFORMS Windows XP с пакетом обновления 2 (SP2) и более поздних версий
Windows Server 2003 с пакетом обновления 1 (SP1) и более поздних версий
SPLREG_ARCHITECTURE
SPLREG_BEEP_ENABLED
SPLREG_DEFAULT_SPOOL_DIRECTORY
SPLREG_DNS_MACHINE_NAME
SPLREG_DS_PRESENT При успешном возвращении pData содержит 0x0001, если компьютер находится в домене DS, в противном случае — значение 0.
SPLREG_DS_PRESENT_FOR_USER При успешном возвращении pData содержит 0x0001, если пользователь вошел в домен DS, в противном случае — значение 0.
SPLREG_EVENT_LOG
SPLREG_MAJOR_VERSION
SPLREG_MINOR_VERSION
SPLREG_NET_POPUP Не поддерживается в Windows Server 2003 и более поздних версиях
SPLREG_NET_POPUP_TO_COMPUTER При успешном возвращении pData содержит значение 1, если уведомления о задании должны отправляться на клиентский компьютер, или 0, если уведомления о заданиях должны отправляться пользователю.
Не поддерживается в Windows Server 2003 и более поздних версиях
SPLREG_OS_VERSION Windows XP и более поздних версий.
SPLREG_OS_VERSIONEX
SPLREG_PORT_THREAD_PRIORITY_DEFAULT
SPLREG_PORT_THREAD_PRIORITY
SPLREG_PRINT_DRIVER_ISOLATION_GROUPS Windows 7 и более поздние версии
SPLREG_PRINT_DRIVER_ISOLATION_TIME_BEFORE_RECYCLE Windows 7 и более поздние версии
SPLREG_PRINT_DRIVER_ISOLATION_MAX_OBJECTS_BEFORE_RECYCLE Windows 7 и более поздние версии
SPLREG_PRINT_DRIVER_ISOLATION_IDLE_TIMEOUT Windows 7 и более поздние версии
SPLREG_PRINT_DRIVER_ISOLATION_EXECUTION_POLICY Windows 7 и более поздние версии
SPLREG_PRINT_DRIVER_ISOLATION_OVERRIDE_POLICY Windows 7 и более поздние версии
SPLREG_REMOTE_FAX При успешном возвращении pData содержит 0x0001, поддерживает ли служба ФАКС удаленных клиентов, в противном случае — значение 0.
SPLREG_RETRY_POPUP При успешном возвращении pData содержит 1, если сервер настроен на повторную попытку всплывающих окон для всех заданий, или 0, если сервер не повторяет всплывающие окна для всех заданий.
Не поддерживается в Windows Server 2003 и более поздних версиях
SPLREG_SCHEDULER_THREAD_PRIORITY
SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT
SPLREG_WEBSHAREMGMT Windows Server 2003 и более поздние версии

Следующие значения pValueName указывают на поведение печати пула при возникновении ошибки.

Значение Комментарии
SPLREG_RESTART_JOB_ON_POOL_ERROR Значение pData указывает время (в секундах) перезапуска задания на другом порту после возникновения ошибки. Этот параметр используется с SPLREG_RESTART_JOB_ON_POOL_ENABLED.
SPLREG_RESTART_JOB_ON_POOL_ENABLED Ненулевое значение в pData указывает, что SPLREG_RESTART_JOB_ON_POOL_ERROR включен.

Время, указанное в SPLREG_RESTART_JOB_ON_POOL_ERROR , — это минимальное время. Фактическое время может быть больше в зависимости от следующих параметров монитора портов, которые являются значениями реестра в этом разделе реестра:

HKLM\SYSTEM\CurrentControlSet\Control\Print\Monitors\<MonitorName>\Ports

Вызовите функцию RegQueryValueEx , чтобы запросить эти значения.

Параметр монитора портов Тип данных Значение
StatusUpdateEnabled REG_DWORD При значении, отличном от нуля, позволяет монитору портов обновить диспетчер очереди очереди с состоянием порта.
StatusUpdateInterval REG_DWORD Указывает интервал (в минутах), когда монитор портов обновляет очередь очереди очереди с состоянием порта.

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

Параметр Тип данных Описание
EMFDespoolingSetting REG_DWORD Значение 0 или, если это значение отсутствует в реестре, включает отрисовку заданий печати на стороне клиента по умолчанию.
Значение 1 отключает отрисовку заданий печати на стороне клиента.
ForceClientSideRendering REG_DWORD Значение 0 или, если это значение отсутствует в реестре, приведет к отрисовке заданий печати на клиенте. Если задание печати не может быть отрисовывается на клиенте, оно будет отображаться на сервере. Если задание печати не может быть отрисовывается на сервере, оно завершится ошибкой.
Значение 1 будет отображать задания печати на клиенте. Если задание печати не может быть отрисовлено на клиенте, оно завершится ошибкой.

Требования

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

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

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

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

GetPrinterDataEx

OpenPrinter

SetPrinter

SetPrinterData

SetPrinterDataEx

PRINTPROCESSOR_CAPS_1