Функция SetPrinterDataEx
Функция SetPrinterDataEx задает данные конфигурации для принтера или сервера печати. Функция сохраняет данные конфигурации в разделе реестра принтера.
Синтаксис
DWORD SetPrinterDataEx(
_In_ HANDLE hPrinter,
_In_ LPCTSTR pKeyName,
_In_ LPCTSTR pValueName,
_In_ DWORD Type,
_In_ LPBYTE pData,
_In_ DWORD cbData
);
Параметры
-
hPrinter [in]
-
Дескриптор принтера или сервера печати, для которого функция задает данные конфигурации. Используйте функцию OpenPrinter, OpenPrinter2 или AddPrinter , чтобы получить дескриптор принтера.
-
pKeyName [in]
-
Указатель на строку, завершающуюся значением NULL, которая указывает ключ, содержащий устанавливаемое значение. Если указанный ключ или подразделы не существуют, функция создает их.
Чтобы сохранить данные конфигурации, которые можно опубликовать в службе каталогов (DS), укажите один из следующих предопределенных разделов реестра.
Значение Значение - SPLDS_DRIVER_KEY
Драйверы принтеров используют этот ключ для хранения свойств драйвера. - SPLDS_SPOOLER_KEY
Зарезервировано. Используется только в очереди печати печати для хранения внутренних свойств очереди очереди. - SPLDS_USER_KEY
Приложения используют этот ключ для хранения свойств принтера, таких как номера ресурсов принтера. Значения, хранящиеся в ключе SPLDS_USER_KEY, публикуются в службе каталогов только при наличии соответствующего свойства в схеме. Администратор домена должен создать свойство , если оно еще не существует. Чтобы опубликовать определяемое пользователем свойство после добавления или изменения значения с помощью SetPrinterDataEx , вызовите Метод SetPrinter с уровнем = 7, а для элемента dwActionPRINTER_INFO_7задано значение DSPRINT_UPDATE.
Вы можете указать другие ключи для хранения данных конфигурации, отличных от DS. Используйте символ обратной косой черты ( \ ) в качестве разделителя, чтобы указать путь с одним или несколькими подразделами.
Если hPrinter является дескриптором принтера, а pKeyName имеет значение NULL или пустую строку, SetPrinterDataEx возвращает ERROR_INVALID_PARAMETER.
Если hPrinter является дескриптором сервера печати, pKeyName игнорируется.
Не используйте SPLDS_SPOOLER_KEY. Чтобы изменить свойства принтера очереди печати, используйте SetPrinter со значением Level = 2.
-
pValueName [in]
-
Указатель на строку, завершающуюся значением NULL, которая идентифицирует заданные данные.
Для принтеров эта строка указывает имя значения в ключе pKeyName .
Для серверов печати эта строка является одной из предопределенных строк, перечисленных в следующем разделе примечаний.
-
Введите [в]
-
Код, указывающий тип данных, на которые указывает параметр pData . Список возможных кодов типов см. в разделе Типы значений реестра.
Если pKeyName указывает один из стандартных ключей службы каталогов, тип должен быть REG_SZ, REG_MULTI_SZ, REG_DWORD или REG_BINARY. Если используется REG_BINARY , значение cbData должно быть равно 1, а служба каталогов обрабатывает данные как логическое значение.
-
pData [in]
-
Указатель на буфер, содержащий данные конфигурации принтера.
-
cbData [in]
-
Размер массива (в байтах).
Возвращаемое значение
Если функция выполнена успешно, возвращаемое значение будет ERROR_SUCCESS.
Если функция завершается сбоем, возвращается значение ошибки.
Комментарии
Примечание
Это блокирующая или синхронная функция, возвращаемая не сразу. Скорость возврата этой функции зависит от факторов времени выполнения, таких как состояние сети, конфигурация сервера печати и факторы реализации драйвера принтера, которые трудно предсказать при написании приложения. Вызов этой функции из потока, который управляет взаимодействием с пользовательским интерфейсом, может привести к тому, что приложение не отвечает.
Чтобы получить существующие данные конфигурации для принтера или очереди печати печати, вызовите функцию GetPrinterDataEx .
Вызов Метода SetPrinterDataEx с параметром pKeyName , равным PrinterDriverData, эквивалентен вызову функции SetPrinterData .
Если hPrinter является дескриптором для сервера печати, pValueName может указать одно из следующих предопределенных значений.
Значение | Комментарии |
---|---|
SPLREG_ALLOW_USER_MANAGEFORMS | Windows XP с пакетом обновления 2 (SP2) и более поздних версий Windows Server 2003 с пакетом обновления 1 (SP1) и более поздних версий |
SPLREG_BEEP_ENABLED | |
SPLREG_DEFAULT_SPOOL_DIRECTORY | |
SPLREG_EVENT_LOG | |
SPLREG_NET_POPUP | Не поддерживается в Windows Server 2003 и более поздних версиях |
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_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
Вызовите функцию RegSetValueEx , чтобы задать эти значения.
Параметр монитора портов | Тип данных | Значение |
---|---|---|
StatusUpdateEnabled | REG_DWORD | Если значение не равно нулю, монитор портов может обновить очередь очереди, указав состояние порта. |
StatusUpdateInterval | REG_DWORD | Указывает интервал в минутах, когда монитор портов обновляет очередь очереди с состоянием порта. |
Чтобы убедиться, что диспетчер очереди перенаправляет задания на следующий доступный принтер в пуле (когда задание печати не печатается в течение заданного времени), монитор портов должен поддерживать ПРОТОКОЛ SNMP, а сетевые порты в пуле должны быть настроены как "СОСТОЯНИЕ SNMP включено". Монитор портов, поддерживающий ПРОТОКОЛ SNMP, является монитором портов TCP/IP ценовой категории "Стандартный".
В Windows 7 и более поздних версиях Windows задания печати, отправляемые на сервер печати, по умолчанию отрисовываются на клиенте. Отрисовку заданий печати на стороне клиента можно настроить, задав для параметра pKeyName значение PrinterDriverData, а pValueName — значение параметра в следующей таблице.
Параметр | Тип данных | Описание |
---|---|---|
EMFDespoolingSetting | REG_DWORD | Значение 0 или, если это значение отсутствует в реестре, включает отрисовку заданий печати на стороне клиента по умолчанию. Значение 1 отключает отрисовку заданий печати на стороне клиента. |
ForceClientSideRendering | REG_DWORD | Значение 0 или, если это значение отсутствует в реестре, приведет к отображению заданий печати на клиенте. Если задание печати не удается отобразить на клиенте, оно будет отрисовывается на сервере. Если задание печати не может быть отрисовывается на сервере, оно завершится ошибкой. Значение 1 будет отображать задания печати на клиенте. Если задание печати не удается отобразить на клиенте, оно завершится ошибкой. |
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows 2000 Professional [только классические приложения] |
Минимальная версия сервера |
Windows 2000 Server [только классические приложения] |
Заголовок |
|
Библиотека |
|
DLL |
|
Имя в кодировке Юникод и ANSI |
SetPrinterDataExW (Юникод) и SetPrinterDataExA (ANSI) |