勇芳软件工作室.汉化:  Printing > Print Spooler API > Printer Driver Installation >

AddPrinterDriverEx

Previous pageReturn to chapter overviewNext page

描述

 

AddPrinterDriverEx功能安装本地或远程打印机驱动程序,并链接配置,数据和驱动程序文件。除了拥有AddPrinterDriver的功能外,它还具有允许严格升级,严格降级,仅复制较新文件以及复制所有文件(不管文件时间戳)的选项。

 

C++ 语法

 

BOOL AddPrinterDriverEx(

__in    LPTSTR pName,

__in    DWORD Level,

__inout LPBYTE pDriverInfo,

__in    DWORD dwFileCopyFlags

);

 

PowerBASIC 语法

 

FUNCTION AddPrinterDriverExA ( _

BYREF pName AS ASCIIZ, _

BYVAL Level AS DWORD, _

BYREF pDriverInfo AS ANY, _

BYVAL dwFileCopyFlags AS DWORD _

) AS LONG

 

Unicode版本:

 

FUNCTION AddPrinterDriverExW ( _

BYREF pName AS WSTRINGZ, _

BYVAL Level AS DWORD, _

BYREF pDriverInfo AS ANY, _

BYVAL dwFileCopyFlags AS DWORD _

) AS LONG

 

参数

 

pName

 

[in]指向以空值终止的字符串的指针,该字符串指定应安装驱动程序的服务器的名称。如果此参数为NULL,则该函数将在本地计算机上安装驱动程序。

 

Level

 

[in]指定pDriverInfo指向的结构的版本。该值可以是2,3,4,6或8。

 

pDriverInfo

 

[in]指向包含打印机驱动程序信息的结构的指针。它可以是以下之一。

 

的价值Level

打印机驱动结构

2

DRIVER_INFO_2

3

DRIVER_INFO_3

4

DRIVER_INFO_4

6

DRIVER_INFO_6

8

Windows Vista或更高版本:DRIVER_INFO_8

 

如果pDriverInfo指向的结构的pEnvironment成员为NULL,则该函数使用调用者/客户端的当前环境,而不是目标/服务器的环境。

 

dwFileCopyFlags

 

[in]指定复制驱动程序文件的选项。此参数可以是以下值之一。

 

含义

APD_COPY_ALL_FILES

添加打印机驱动程序并复制打印机驱动程序目录中的所有文件。此选项将忽略文件时间戳。

APD_COPY_FROM_DIRECTORY

Windows XP:使用DRIVER_INFO_6结构中指定的全限定文件名添加打印机驱动程序。该标志与其他复制标志之一结合OR。如果设置了此标志,AddPrinterDriverEx如果不存在DRIVER_INFO_6结构指定存在的文件,则AddPrinterDriverEx将失败。这些文件不需要复制到系统的printer-driver目录。见备注。

APD_COPY_NEW_FILES

添加打印机驱动程序,并将打印机驱动程序目录中的文件复制到比当前使用的任何相应文件更新的文件。此标志模拟AddPrinterDriver的行为。

APD_STRICT_DOWNGRADE

仅当打印机驱动程序目录中的所有文件都比当前使用的任何相应文件更旧时才添加打印机驱动程序。

APD_STRICT_UPGRADE

仅当打印机驱动程序目录中的所有文件都比当前使用的任何相应文件更新时才添加打印机驱动程序。

 

返回值

 

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

 

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

 

Windows XP:如果已知打印机驱动程序在操作系统中遇到问题,则AddPrinterDriverEx将失败,并显示以下错误代码之一:

 

错误代码

含义

ERROR_PRINTER_DRIVER_BLOCKED

驱动程序在操作系统上不起作用。

ERROR_PRINTER_DRIVER_WARNED

驱动程序在操作系统上不可靠。但是,如果指定了APD_INSTALL_WARNED_DRIVER,则会安装驱动程序,并且不会发出警告。

 

有关详细信息,请参阅备注。

 

备注

 

来电者必须有SeLoadDriverPrivilege.

 

在调用AddPrinterDriverEx函数之前,必须将驱动程序所需的所有文件复制到系统的printer-driver目录。要检索此目录的名称,请调用GetPrinterDriverDirectory功能。

 

要确定当前安装的打印机驱动程序,请调用EnumPrinterDrivers功能。

 

如果打印机驱动程序已成功添加,该函数将调用DrvDriverEvent(DRIVER_EVENT_INITIALIZE,Level,DRIVER_INFO_ *,lparam)功能,以允许驱动程序在安装打印机驱动程序期间执行所需的任何初始化。有关DrvDriverEvent的详细信息,请参阅Microsoft Windows 2000驱动程序开发工具包。

 

Windows XP:在调用DrvDriverEvent期间,驱动程序不应使用UI呼叫。要执行与UI相关的作业,安装程序应使用打印机的.inf文件中的VendorSetup条目,或者对于即插即用设备,安装程序可以使用特定于设备的共同安装程序。有关VendorSetup的详细信息,请参阅Microsoft Windows 2000驱动程序开发工具包。

 

Windows XPDRIVER_INFO_6结构中引用的文件必须是进行调用的计算机的本地文件。只要UNC名称是本地机器,文件名可以是UNC名称。

 

引用文件 #INCLUDE Once

 

WinSpool.inc(包括Windows.inc)