AddPrinterDriverEx, fonction

La fonction AddPrinterDriverEx installe un pilote d’imprimante local ou distant et lie les fichiers de configuration, de données et de pilotes. Outre les fonctionnalités de AddPrinterDriver, il dispose également d’options qui permettent une mise à niveau stricte, une rétrogradation stricte, la copie de fichiers plus récents uniquement et la copie de tous les fichiers (quel que soit l’horodatage des fichiers).

Notes

L’installation d’un pilote d’imprimante sans package de pilotes n’est plus recommandée. Utilisez Plutôt InstallPrinterDriverFromPackage .

Syntaxe

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

Paramètres

pName [in]

Pointeur vers une chaîne terminée par null qui spécifie le nom du serveur sur lequel le pilote doit être installé. Si ce paramètre a la valeur NULL, la fonction installe le pilote sur l’ordinateur local.

Niveau [in]

Version de la structure vers laquelle pDriverInfo pointe. Cette valeur peut être 2, 3, 4, 6 ou 8.

pDriverInfo [in, out]

Pointeur vers une structure contenant des informations sur le pilote d’imprimante. Il peut s’agir de l’un des éléments suivants.

Valeur de Level DRIVER_INFO_* Structure
2
DRIVER_INFO_2
3
DRIVER_INFO_3
4
DRIVER_INFO_4
6
DRIVER_INFO_6
8
DRIVER_INFO_8

Si le membre pEnvironment de la structure pointée vers pDriverInfo est NULL, la fonction utilise l’environnement actuel de l’appelant/client, et non l’environnement du serveur/de destination.

dwFileCopyFlags [in]

Options de copie des fichiers de pilote. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
APD_COPY_ALL_FILES
Ajoutez le pilote d’imprimante et copiez tous les fichiers dans le répertoire du pilote d’imprimante. Les horodatages de fichier sont ignorés avec cette option.
APD_COPY_FROM_DIRECTORY
Ajoutez le pilote d’imprimante à l’aide des noms de fichiers complets spécifiés dans la structure DRIVER_INFO_6 . Cet indicateur est ORed conjointement avec l’un des autres indicateurs de copie. Si cet indicateur est défini, AddPrinterDriverEx échoue si les fichiers n’existent pas là où ils sont spécifiés pour exister par la structure DRIVER_INFO_6 . Les fichiers n’ont pas besoin d’être copiés dans le répertoire du pilote d’imprimante du système. Consultez les remarques.
Windows 2000 : Cet indicateur n’est pas pris en charge.
APD_COPY_NEW_FILES
Ajoutez le pilote d’imprimante et copiez les fichiers dans le répertoire printer-driver qui sont plus récents que les fichiers correspondants actuellement utilisés. Cet indicateur émule le comportement de AddPrinterDriver.
APD_STRICT_DOWNGRADE
Ajoutez le pilote d’imprimante uniquement si tous les fichiers du répertoire du pilote d’imprimante sont plus anciens que les fichiers correspondants actuellement utilisés.
APD_STRICT_UPGRADE
Ajoutez le pilote d’imprimante uniquement si tous les fichiers du répertoire du pilote d’imprimante sont plus récents que les fichiers correspondants actuellement utilisés.

Valeur retournée

Si la fonction réussit, la valeur de retour est une valeur différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro.

Si le pilote d’imprimante rencontre des problèmes d’utilisation du système d’exploitation, AddPrinterDriverEx échoue avec l’un des codes d’erreur suivants :

Code d'erreur Signification
ERROR_PRINTER_DRIVER_BLOCKED Le pilote ne fonctionne pas sur le système d’exploitation.
ERROR_PRINTER_DRIVER_WARNED Le pilote n’est pas fiable sur le système d’exploitation. Toutefois, si APD_INSTALL_WARNED_DRIVER est spécifié, le pilote est installé et aucun avertissement n’est donné.

Pour plus d'informations, consultez la section Notes.

Notes

Notes

Il s’agit d’une fonction bloquante ou synchrone qui peut ne pas être retournée immédiatement. La rapidité avec laquelle cette fonction retourne dépend de facteurs d’exécution tels que l’status réseau, la configuration du serveur d’impression et les facteurs d’implémentation du pilote d’imprimante qui sont difficiles à prédire lors de l’écriture d’une application. L’appel de cette fonction à partir d’un thread qui gère l’interaction avec l’interface utilisateur peut donner l’impression que l’application ne répond pas.

L’appelant doit avoir le SeLoadDriverPrivilege.

Avant d’appeler la fonction AddPrinterDriverEx , tous les fichiers requis par le pilote doivent être copiés dans le répertoire du pilote d’imprimante du système. Pour récupérer le nom de ce répertoire, appelez la fonction GetPrinterDriverDirectory .

Pour déterminer les pilotes d’imprimante actuellement installés, appelez la fonction EnumPrinterDrivers .

Si le pilote d’imprimante a été correctement ajouté, la fonction appelle la fonction DrvDriverEvent (DRIVER_EVENT_INITIALIZE, Level, DRIVER_INFO_*, lparam ) pour permettre au pilote d’effectuer toutes les initialisations requises lors de l’installation d’un pilote d’imprimante. Pour plus d’informations sur DrvDriverEvent, consultez le Kit de développement de pilotes Microsoft Windows (DDK)

Le pilote ne doit pas utiliser d’appel d’interface utilisateur pendant l’appel à DrvDriverEvent. Pour effectuer des tâches liées à l’interface utilisateur, le programme d’installation doit utiliser l’entrée VendorSetup dans le fichier .inf de l’imprimante ou, pour Plug-and-Play appareils, le programme d’installation peut utiliser un co-programme d’installation spécifique à l’appareil. Pour plus d’informations sur VendorSetup, consultez le DDK.

Les fichiers référencés dans la structure DRIVER_INFO_6 doivent être locaux à l’ordinateur à partir duquel l’appel est effectué. Un nom de fichier peut être un nom UNC tant que le nom UNC est l’ordinateur local.

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge
Windows 2000 Server [applications de bureau uniquement]
En-tête
Winspool.h (inclure Windows.h)
Bibliothèque
Winspool.lib
DLL
Winspool.drv
Noms Unicode et ANSI
AddPrinterDriverExW (Unicode) et AddPrinterDriverExA (ANSI)

Voir aussi

Impression

Fonctions API du spouleur d’impression

AddPrinterDriver

DRIVER_INFO_2

DRIVER_INFO_3

DRIVER_INFO_4

DRIVER_INFO_6

DeletePrinterDriverEx

EnumPrinterDrivers

GetPrinterDriverDirectory