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 |
|
Bibliothèque |
|
DLL |
|
Noms Unicode et ANSI |
AddPrinterDriverExW (Unicode) et AddPrinterDriverExA (ANSI) |