共用方式為


AddPrinterDriverEx 函式

AddPrinterDriverEx函式會安裝本機或遠端印表機驅動程式,並連結設定、資料和驅動程式檔案。 除了具有 AddPrinterDriver的功能之外,它也提供選項,允許嚴格升級、嚴格降級、僅複製較新的檔案,以及複製所有檔案 (,不論檔案時間戳記) 為何。

注意

不再建議安裝不含驅動程式套件的印表機驅動程式。 請改用 InstallPrinterDriverFromPackage

語法

BOOL AddPrinterDriverEx(
  _In_    LPTSTR pName,
  _In_    DWORD  Level,
  _Inout_ LPBYTE pDriverInfo,
  _In_    DWORD  dwFileCopyFlags
);

參數

pName [in]

Null 終止字串的指標,指定應該安裝驅動程式的伺服器名稱。 如果此參數為 Null,函式會在本機電腦上安裝驅動程式。

層級 [in]

pDriverInfo指向的結構版本。 此值可以是 2、3、4、6 或 8。

pDriverInfo [in, out]

包含印表機驅動程式資訊的 結構的指標。 它可以是下列其中一項。

層級的值 DRIVER_INFO_* 結構
2
DRIVER_INFO_2
3
DRIVER_INFO_3
4
DRIVER_INFO_4
6
DRIVER_INFO_6
8
DRIVER_INFO_8

如果pDriverInfo所指向結構的pEnvironment成員為Null,則函式會使用呼叫端/用戶端的目前環境,而不是目的地/伺服器的環境。

dwFileCopyFlags [in]

複製驅動程式檔案的選項。 此參數可以是下列其中一個值。

意義
APD_COPY_ALL_FILES
新增印表機驅動程式,並複製印表機驅動程式目錄中的所有檔案。 此選項會忽略檔案時間戳記。
APD_COPY_FROM_DIRECTORY
使用 DRIVER_INFO_6 結構中指定的完整檔案名來新增印表機驅動程式。 此旗標會與其中一個其他複製旗標搭配使用。 如果已設定此旗標,如果檔案不存在,則 AddPrinterDriverEx 會失敗,因為 檔案是由 DRIVER_INFO_6 結構所指定。 檔案不需要複製到系統的印表機驅動程式目錄。 請參閱。
Windows 2000: 不支援此旗標。
APD_COPY_NEW_FILES
新增印表機驅動程式,並在印表機驅動程式目錄中複製比目前使用中任何對應檔案還新的檔案。 此旗標會模擬 AddPrinterDriver的行為。
APD_STRICT_DOWNGRADE
只有在印表機驅動程式目錄中的所有檔案都比目前使用的任何對應檔案還舊時,才新增印表機驅動程式。
APD_STRICT_UPGRADE
只有在印表機驅動程式目錄中的所有檔案都比目前使用的任何對應檔案更新時,才新增印表機驅動程式。

傳回值

如果函式成功,則傳回值是非零值。

如果此函式失敗,則傳回值為零。

如果印表機驅動程式已知有使用作業系統的問題, AddPrinterDriverEx 將會失敗,並出現下列其中一個錯誤碼:

錯誤碼 意義
ERROR_PRINTER_DRIVER_BLOCKED 驅動程式無法在作業系統上運作。
ERROR_PRINTER_DRIVER_WARNED 驅動程式在作業系統上不可靠。 不過,如果指定APD_INSTALL_WARNED_DRIVER,則會安裝驅動程式,而且沒有提供警告。

如需詳細資訊,請參閱<備註>一節。

備註

注意

這是封鎖或同步函式,可能不會立即傳回。 此函式傳回的速度取決於執行時間因素,例如網路狀態、列印伺服器組態,以及難以在撰寫應用程式時預測的印表機驅動程式實作因素。 從管理與使用者介面互動的執行緒呼叫此函式,可能會讓應用程式看起來沒有回應。

呼叫端必須具有 SeLoadDriverPrivilege

呼叫 AddPrinterDriverEx 函式之前,驅動程式所需的所有檔案都必須複製到系統的印表機驅動程式目錄。 若要擷取此目錄的名稱,請呼叫 GetPrinterDriverDirectory 函式

若要判斷目前已安裝的印表機驅動程式,請呼叫 EnumPrinterDrivers 函式。

如果已成功新增印表機驅動程式,函式會呼叫 DrvDriverEvent (DRIVER_EVENT_INITIALIZE、Level、DRIVER_INFO_*、lparam ) 函式,以允許驅動程式在安裝印表機驅動程式期間執行所需的任何初始化。 如需 DrvDriverEvent的詳細資訊,請參閱 Microsoft Windows 驅動程式開發工具組 (DDK)

驅動程式不應該在呼叫 DrvDriverEvent期間使用 UI 呼叫。 若要執行 UI 相關作業,安裝程式應該使用印表機 .inf 檔案中的 VendorSetup 專案,或針對隨插即用裝置,安裝程式可以使用裝置特定的共同安裝程式。 如需 VendorSetup 的詳細資訊,請參閱 DDK。

DRIVER_INFO_6 結構中參考的檔案,必須位於進行呼叫的電腦本機。 只要 UNC 名稱是本機電腦,檔案名就可以是 UNC 名稱。

規格需求

需求
最低支援的用戶端
Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器
Windows 2000 Server [僅限傳統型應用程式]
標頭
Winspool.h (包含 Windows.h)
程式庫
Winspool.lib
DLL
Winspool.drv
Unicode 與 ANSI 名稱
AddPrinterDriverExW (Unicode) 和 AddPrinterDriverExA (ANSI)

另請參閱

列印

列印多工緩衝處理器 API 函式

AddPrinterDriver

DRIVER_INFO_2

DRIVER_INFO_3

DRIVER_INFO_4

DRIVER_INFO_6

DeletePrinterDriverEx

EnumPrinterDrivers

GetPrinterDriverDirectory