Funzione AddPrinterDriverEx

La funzione AddPrinterDriverEx installa un driver della stampante locale o remota e collega i file di configurazione, dati e driver. Oltre a avere le funzionalità di AddPrinterDriver, include anche opzioni che consentono un aggiornamento rigoroso, un downgrade rigoroso, la copia solo dei file più recenti e la copia di tutti i file (indipendentemente dai timestamp dei file).

Nota

L'installazione di un driver della stampante senza un pacchetto driver non è più consigliata. Usare invece InstallPrinterDriverFromPackage .

Sintassi

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

Parametri

pName [in]

Puntatore a una stringa con terminazione Null che specifica il nome del server in cui deve essere installato il driver. Se questo parametro è NULL, la funzione installa il driver nel computer locale.

Livello [in]

Versione della struttura a cui punta pDriverInfo . Questo valore può essere 2, 3, 4, 6 o 8.

pDriverInfo [in, out]

Puntatore a una struttura contenente informazioni sul driver della stampante. Può essere una delle seguenti.

Valore di Level struttura DRIVER_INFO_*
2
DRIVER_INFO_2
3
DRIVER_INFO_3
4
DRIVER_INFO_4
6
DRIVER_INFO_6
8
DRIVER_INFO_8

Se il membro pEnvironment della struttura a cui punta pDriverInfo è NULL, la funzione usa l'ambiente corrente del chiamante/client, non l'ambiente del server o di destinazione.

dwFileCopyFlags [in]

Opzioni per copiare i file del driver. Questo parametro può avere uno dei valori seguenti.

Valore Significato
APD_COPY_ALL_FILES
Aggiungere il driver della stampante e copiare tutti i file nella directory printer-driver. I timestamp dei file vengono ignorati con questa opzione.
APD_COPY_FROM_DIRECTORY
Aggiungere il driver della stampante usando i nomi di file completi specificati nella struttura DRIVER_INFO_6 . Questo flag è ORed in combinazione con uno degli altri flag di copia. Se questo flag è impostato, AddPrinterDriverEx avrà esito negativo se i file non esistono dove sono specificati per esistere dalla struttura DRIVER_INFO_6 . Non è necessario copiare i file nella directory printer-driver del sistema. Vedere le osservazioni.
Windows 2000: Questo flag non è supportato.
APD_COPY_NEW_FILES
Aggiungere il driver della stampante e copiare i file nella directory printer-driver più recenti di tutti i file corrispondenti attualmente in uso. Questo flag emula il comportamento di AddPrinterDriver.
APD_STRICT_DOWNGRADE
Aggiungere il driver della stampante solo se tutti i file nella directory printer-driver sono precedenti a quelli attualmente in uso.
APD_STRICT_UPGRADE
Aggiungere il driver della stampante solo se tutti i file nella directory printer-driver sono più recenti di quelli attualmente in uso.

Valore restituito

Se la funzione ha esito positivo, il valore restituito è un valore diverso da zero.

Se la funzione ha esito negativo, il valore restituito è zero.

Se il driver della stampante presenta problemi con il sistema operativo, AddPrinterDriverEx avrà esito negativo con uno dei codici di errore seguenti:

Codice di errore Significato
ERROR_PRINTER_DRIVER_BLOCKED Il driver non funziona nel sistema operativo.
ERROR_PRINTER_DRIVER_WARNED Il driver non è affidabile nel sistema operativo. Tuttavia, se viene specificato APD_INSTALL_WARNED_DRIVER, il driver viene installato e non viene visualizzato alcun avviso.

Per ulteriori informazioni, vedere la sezione Osservazioni.

Commenti

Nota

Si tratta di una funzione di blocco o sincrona e potrebbe non restituire immediatamente. La velocità di restituzione di questa funzione dipende da fattori di runtime come lo stato della rete, la configurazione del server di stampa e i fattori di implementazione del driver della stampante difficili da prevedere durante la scrittura di un'applicazione. Chiamando questa funzione da un thread che gestisce l'interazione con l'interfaccia utente, l'applicazione potrebbe sembrare non rispondente.

Il chiamante deve avere SeLoadDriverPrivilege.

Prima di chiamare la funzione AddPrinterDriverEx , tutti i file richiesti dal driver devono essere copiati nella directory printer-driver del sistema. Per recuperare il nome di questa directory, chiamare la funzione GetPrinterDriverDirectory .

Per determinare quali driver della stampante sono attualmente installati, chiamare la funzione EnumPrinterDrivers .

Se il driver della stampante è stato aggiunto correttamente, la funzione chiama la funzione DrvDriverEvent (DRIVER_EVENT_INITIALIZE, Level, DRIVER_INFO_*, lparam ) per consentire al driver di eseguire le inizializzazioni necessarie durante l'installazione di un driver della stampante. Per altre informazioni su DrvDriverEvent, vedere Microsoft Windows Driver Development Kit (DDK)

Il driver non deve usare una chiamata all'interfaccia utente durante la chiamata a DrvDriverEvent. Per eseguire processi correlati all'interfaccia utente, il programma di installazione deve usare la voce VendorSetup nel file inf della stampante o, per i dispositivi Plug and Play, il programma di installazione può usare un programma di installazione di co-installazione specifico del dispositivo. Per altre informazioni su VendorSetup, vedere DDK.

I file a cui viene fatto riferimento nella struttura DRIVER_INFO_6 devono essere locali nel computer da cui viene effettuata la chiamata. Un nome file può essere un nome UNC purché il nome UNC sia il computer locale.

Requisiti

Requisito Valore
Client minimo supportato
Windows 2000 Professional [solo app desktop]
Server minimo supportato
Windows 2000 Server [solo app desktop]
Intestazione
Winspool.h (include Windows.h)
Libreria
Winspool.lib
DLL
Winspool.drv
Nomi Unicode e ANSI
AddPrinterDriverExW (Unicode) e AddPrinterDriverExA (ANSI)

Vedi anche

Stampa

Funzioni dell'API spooler di stampa

Addprinterdriver

DRIVER_INFO_2

DRIVER_INFO_3

DRIVER_INFO_4

DRIVER_INFO_6

DeletePrinterDriverEx

EnumPrinterDrivers

Getprinterdriverdirectory