勇芳软件工作室.汉化:  Printing > Print Spooler API > Print Spooler API Reference > Print Spooler API Functions >

SetPrinterDataEx

Previous pageReturn to chapter overviewNext page

描述

 

SetPrinterDataEx功能设置打印机或打印服务器的配置数据。该函数将配置数据存储在打印机的注册表项下。

 

C++ 语法

 

DWORD SetPrinterDataEx(

__in HANDLE hPrinter,

__in LPCTSTR pKeyName,

__in LPCTSTR pValueName,

__in DWORD Type,

__in LPBYTE pData,

__in DWORD cbData

);

 

PowerBASIC 语法

 

FUNCTION SetPrinterDataExA ( _

BYVAL hPrinter AS DWORD, _

BYREF pKeyName AS ASCIIZ, _

BYREF pValueName AS ASCIIZ, _

BYVAL pType AS DWORD, _

BYREF pData AS ANY, _

BYVAL cbData AS DWORD _

) AS DWORD

 

Unicode版本:

 

FUNCTION SetPrinterDataExW ( _

BYVAL hPrinter AS DWORD, _

BYREF pKeyName AS WSTRINGZ, _

BYREF pValueName AS WSTRINGZ, _

BYVAL pType AS DWORD, _

BYREF pData AS ANY, _

BYVAL cbData AS DWORD _

) AS DWORD

 

参数

 

hPrinter

 

[in]处理功能设置配置数据的打印机或打印服务器。使用OpenPrinterAddPrinter功能来检索打印机手柄。

 

pKeyName

 

[in]指向指定包含要设置的值的键的以空字符结尾的字符串的指针。如果指定的键或子键不存在,则该函数将创建它们。

 

要存储可以在目录服务(DS)中发布的配置数据,请指定以下预定义的注册表项之一。

 

含义

SPLDS_DRIVER_KEY

打印机驱动程序使用此键存储驱动程序属性。

SPLDS_SPOOLER_KEY

保留。仅由打印后台处理程序使用以存储内部假脱机程序属性。

SPLDS_USER_KEY

应用程序使用此键来存储打印机属性,如打印机资产编号。

 

存储在SPLDS_USER_KEY键下的值仅在模式中存在相应属性时才会在目录服务中发布。域管理员必须创建该属性(如果该属性不存在)。在使用SetPrinterDataEx添加或更改值后发布用户定义的属性,请调用Level = 7的SetPrinter,并将PRINTER_INFO_7PRINTER_INFO_7成员设置为DSPRINT_UPDATE。

 

您可以指定其他键来存储非DS配置数据。使用反斜杠(\\)字符作为分隔符来指定具有一个或多个子项的路径。

 

如果hPrinter是打印机的句柄,并且pKeyName为NULL或空字符串,则SetPrinterDataEx返回ERROR_INVALID_PARAMETER。

 

如果hPrinter是打印服务器的句柄,则pKeyName将被忽略。

 

注意,不要使用SPLDS_SPOOLER_KEY。为了更改假脱机打印机属性,请使用水平= 2的SetPrinter.

 

pValueName

 

[in]指向指定要设置的数据的以空字符结尾的字符串的指针。

 

对于打印机,此字符串指定pKeyName键下的值的名称。

 

对于打印服务器,此字符串是以下备注部分中列出的预定义字符串之一。

 

pType

 

[in]指定一个代码,指示pData参数指向的数据类型。

 

如果pKeyName指定了一个预定义的目录服务密钥,则类型必须为REG_SZ,REG_MULTI_SZ,REG_DWORD或REG_BINARY。如果使用REG_BINARY,则cbData必须等于1,目录服务将数据视为布尔值。

 

pData

 

[in]指向包含打印机配置数据的缓冲区的指针。

 

cbData

 

[in]指定数组的大小(以字节为单位)。

 

返回值

 

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

 

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

 

备注

 

要检索打印机的现有配置数据,请调用GetPrinterDataEx功能。

 

如果hPrinter是打印服务器的句柄,则pValueName可以指定以下预定义值之一。

 

SPLREG_ALLOW_USER_MANAGEFORMS

 

Windows XP,SP2或更高版本。

Windows Server 2003,SP1或更高版本。

 

SPLREG_ARCHITECTURE

 

SPLREG_BEEP_ENABLED

 

SPLREG_DEFAULT_SPOOL_DIRECTORY

 

SPLREG_DNS_MACHINE_NAME

 

SPLREG_DS_PRESENT

 

成功返回后,pData如果机器位于DS域,则包含&H0001,否则为0。

 

SPLREG_DS_PRESENT_FOR_USER

 

成功返回后,如果用户登录到DS域,则pData包含&H0001,否则为0。

 

SPLREG_EVENT_LOG

 

SPLREG_MAJOR_VERSION

 

SPLREG_MINOR_VERSION

 

SPLREG_NET_POPUP

 

SPLREG_NET_POPUP_TO_COMPUTER

 

成功返回时,pData??如果作业通知应发送到客户端计算机,则包含1,如果作业通知要发送给用户,则为0。

 

SPLREG_OS_VERSION

 

Windows XP或更高版本。

 

SPLREG_OS_VERSIONEX

 

Windows 2000或更高版本。

 

SPLREG_PORT_THREAD_PRIORITY_DEFAULT

 

Windows 2000或更高版本。

 

SPLREG_PORT_THREAD_PRIORITY

 

Windows 2000或更高版本。

 

SPLREG_PRINT_DRIVER_ISOLATION_GROUPS_SEPARATOR

 

Windows 7或更高版本。

 

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

 

Windows 2000或更高版本。

 

成功返回后,pData如果传真服务支持远程客户端,则包含&H0001,否则为0。

 

SPLREG_RETRY_POPUP

 

Windows 2000或更高版本。

 

成功返回后,如果服务器设置为重试所有作业的PopUps,pData包含1,如果服务器未重试所有作业的PopUps,则为0。

 

SPLREG_SCHEDULER_THREAD_PRIORITY

 

Windows 2000或更高版本。

 

SPLREG_SCHEDULER_THREAD_PRIORITY_DEFAULT

 

Windows 2000或更高版本。

 

SPLREG_WEBSHAREMGMT

 

Windows Server 2003或更高版本。

 

SPLREG_W3SVCINSTALLED

 

Windows 2000或更高版本。

 

以下值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下。

 

端口监视器设置

含义

StatusUpdateEnabled

如果非零值,端口监视器将使用端口状态更新后台处理程序。

StatusUpdateInterval

指定端口监视器使用端口状态更新后台处理程序的时间间隔(以秒为单位)。

 

为了确保后台处理程序将作业重定向到池中的下一个可用打印机(当打印作业在设定的时间内未打印时),端口监视器必须支持SNMP(请参见下表),并且池中的网络端口必须配置为“启用SNMP状态”。

 

操作系统版本

支持SNMP的端口监视器

Windows NT 4.0

HP标准TCP / IP端口监视器。

Windows 2000及更高版本

标准TCP / IP端口监控

 

使用pKeyName参数设置为“PrinterDriverData”调用SetPrinterDataEx相当于调用SetPrinterData函数。

 

引用文件 #INCLUDE Once

 

WinSpool.inc