Partager via


Isolation des pilotes d’imprimante

Important

La plateforme d’impression moderne est le moyen privilégié de Windows pour communiquer avec les imprimantes. Nous vous recommandons d’utiliser le pilote de classe IPP en boîte de Microsoft, ainsi que les applications de support d’impression (PSA), pour personnaliser l’expérience d’impression dans Windows 10 et 11 pour le développement de périphériques d’impression.

Pour plus d’informations, veuillez consulter la section Plateforme d’impression moderne et le Guide de conception des applications de support d’impression.

L’isolation des pilotes d’imprimante améliore la fiabilité du service d’impression de Windows, en permettant aux pilotes d’imprimante de s’exécuter dans des processus distincts de celui dans lequel s’exécute le spooler d’impression.

La prise en charge de l’isolation des pilotes d’imprimante est implémentée dans Windows 7, Windows Server 2008 R2 et les systèmes d’exploitation ultérieurs.

À partir de Windows 7 et Windows Server 2008 R2, un pilote d’imprimante intégré doit prendre en charge l’isolation des pilotes d’imprimante et pouvoir s’exécuter dans un processus isolé.

Dans les versions précédentes de Windows, les pilotes d’imprimante s’exécutaient toujours dans le même processus que le spooler. Les composants de pilote d’imprimante qui s’exécutaient dans le processus du spooler comprenaient les éléments suivants :

  • Modules de configuration des pilotes d’imprimante

  • Processeurs d’impression

  • Modules de rendu

La défaillance d’un seul composant de pilote d’impression pouvait entraîner une défaillance du sous-système d’impression, interrompant les opérations d’impression pour tous les utilisateurs et pour tous les composants d’impression.

À partir de Windows 7 et Windows Server 2008 R2, un administrateur peut, en option, configurer un pilote d’imprimante pour qu’il s’exécute dans un processus isolé, un processus distinct du processus du spooler. En isolant le pilote, l’administrateur peut empêcher une défaillance d’un composant de pilote d’interrompre le service d’impression.

Pour plus d’informations sur les fonctions du spooler, veuillez consulter la section Fonctions et structures des composants du spooler.

Prise en charge de l’isolation des pilotes dans les fichiers INF

Par défaut, si le fichier INF qui installe un pilote d’imprimante n’indique pas que le pilote prend en charge l’isolation des pilotes, le programme d’installation de la classe d’imprimantes configure le pilote pour qu’il s’exécute dans le processus du spooler. Cependant, si le fichier INF indique que le pilote prend en charge l’isolation des pilotes, le programme d’installation configure le pilote pour qu’il s’exécute dans un processus isolé. Un administrateur peut remplacer ces paramètres de configuration et spécifier, pour chaque pilote, s’il doit s’exécuter dans le processus du spooler ou dans un processus isolé.

Pour prendre en charge l’isolation des pilotes, le fichier INF qui installe un pilote d’imprimante peut utiliser le mot-clé DriverIsolation pour indiquer si le pilote prend en charge l’isolation des pilotes d’imprimante. Le paramètre DriverIsolation=2 indique que le pilote prend en charge l’isolation des pilotes. Le paramètre DriverIsolation=0 indique que le pilote ne prend pas en charge l’isolation des pilotes. Omettre le mot-clé DriverIsolation du fichier INF a le même effet que de définir DriverIsolation=0.

Fonctions du spooler pour les paramètres d’isolation des pilotes

Le tableau suivant montre les fonctions du spooler qu’un administrateur peut utiliser pour configurer les paramètres d’isolation des pilotes.

Nom de la fonction Opération
GetPrinterDataEx Obtenez les paramètres d’isolation des pilotes pour une imprimante.
SetPrinterDataEx Définissez les paramètres d’isolation des pilotes pour une imprimante.
EnumPrinterDataEx Énumérez les paramètres d’isolation des pilotes pour une imprimante.
FindFirstPrinterChangeNotification, FindNextPrinterChangeNotification Demandez des notifications de modifications des paramètres d’isolation des pilotes pour une imprimante.

Le format des données est le suivant :

  • Chaque pilote dans chaque groupe est séparé par « \ »

  • Chaque groupe de pilotes est séparé par « \\ »

Le premier groupe charge le pilote dans les processus du spooler. Chaque groupe suivant charge les pilotes dans des processus isolés par groupe. Le deuxième groupe est considéré comme le groupe « partagé » dans lequel d’autres pilotes prenant en charge l’isolation sont chargés par défaut.

Configuration du mode d’isolation des pilotes via l’administration

Un administrateur d’ordinateur peut utiliser la console de gestion d’impression Windows ou appeler les fonctions du spooler Windows pour configurer les paramètres d’isolation des pilotes pour chaque pilote d’imprimante installé sur un ordinateur. L’administrateur configure le pilote pour utiliser l’un des paramètres répertoriés dans le tableau suivant.

Mode d’isolation des pilotes Signification
Partagé Exécutez le pilote dans un processus partagé avec d’autres pilotes d’imprimante mais séparé du processus du spooler.
Isolé Exécutez le pilote dans un processus séparé du processus du spooler et non partagé avec d’autres pilotes d’imprimante.
Aucune Exécutez le pilote dans le processus du spooler.

Idéalement, un pilote d’imprimante est capable de s’exécuter en mode partagé. Autrement dit, il s’exécute dans un processus isolé partagé avec d’autres pilotes d’imprimante mais séparé du processus du spooler. Un pilote peut devoir s’exécuter en mode isolé s’il peut s’exécuter dans un processus séparé du processus du spooler, mais rencontre des difficultés à partager le processus avec d’autres pilotes. Par exemple, un pilote mal conçu peut avoir des noms de fichiers qui entrent en conflit avec ceux de pilotes connexes ou de différentes versions du même pilote, ou le pilote peut se défausser fréquemment ou avoir une fuite de mémoire qui interfère avec le fonctionnement d’autres pilotes s’exécutant dans le même processus.

Pour prendre en charge le dépannage, l’administrateur de domaine peut désactiver la fonctionnalité d’isolation des pilotes sur un ordinateur du domaine, ou l’administrateur peut forcer tous les pilotes d’imprimante de l’ordinateur à s’exécuter en mode isolé. En mode isolé, chaque pilote doit s’exécuter dans un processus séparé du spooler et des autres pilotes d’imprimante.

Si l’isolation des pilotes est désactivée par la stratégie de groupe, l’isolation est désactivée pour tous les pilotes d’imprimante. Si l’isolation est activée, alors les pilotes individuels sont vérifiés en mode. Si un pilote a le mode d’isolation défini, il s’exécute en mode partagé, isolé ou aucun, en fonction de l’entrée du registre. Cependant, si le pilote n’a pas le mode d’isolation défini et qu’il est compatible avec l’isolation, il s’exécute en mode partagé. Si le pilote n’est pas compatible avec le mode, le remplacement par la stratégie de groupe détermine si le pilote s’exécute en mode partagé ou aucun.

Le schéma suivant montre une carte de décision pour choisir le mode d’isolation des pilotes :

organigramme pour choisir le mode d’isolation des pilotes.

Fonctions du spooler autorisées en mode d’isolation des pilotes

Seules des fonctions spécifiques sont autorisées en mode d’isolation des pilotes.

Fonctions Spoolss.dll

Les fonctions suivantes sont exportées par spoolss.dll et sont disponibles pour les plugins du spooler en les liant à spoolss.lib.

Fonctions WinSpool.drv

Les fonctions suivantes sont exportées par winspool.drv et sont disponibles pour les plugins du spooler en les liant à Winspool.h.

Voir aussi

Fonctions et structures des composants du spooler