Windows 7 / Windows Server 2008 R2: Isolement du pilote d'imprimante – Microsoft Tech Community – Serveur d’impression
Publié pour la première fois sur TECHNET le 08 oct. 2009
Bienvenue les gars! C’est le huitième jour. Nous sommes à un peu plus du tiers de notre série et il ne reste que deux semaines avant le lancement! Levez la main si vous avez déjà eu à faire face à un plantage du spouleur d’impression. Gardez la main haute si le problème était causé par un pilote défectueux. Continuez comme ça si vous avez déjà souhaité qu'il y ait un moyen d'isoler les mauvais conducteurs. OK, vous êtes presque tous. L’isolement des pilotes d’imprimerie va vous faciliter la vie! Croyez-moi, je vous dis que nos ingénieurs du support technique sont aussi enthousiastes que vous à propos de cette fonctionnalité.
Alors, quelle est l'isolation du pilote d'impression? Comme son nom l'indique, cette fonctionnalité permet d'exécuter certains composants du pilote d'impression dans un (des) processus séparé (s) du spouleur d'impression. Ainsi, tous les problèmes associés aux pilotes défectueux sont isolés du service du spouleur d'impression et ne le feront pas échouer. Pour ceux d’entre vous qui existent depuis l’époque de Windows NT, je suis sûr que vous vous souvenez qu’un mauvais pilote d’impression pourrait vérifier le système. À l'époque, c'était parce que les pilotes d'impression étaient des pilotes en mode noyau (version 2). Avec le passage aux pilotes en mode utilisateur (version 3), les mauvais pilotes d’impression n’affectaient que le spouleur et n’entraînaient pas la panne de l’ensemble du système. Avec PDI, nous allons encore plus loin: les pilotes d’impression isolés qui sont défectueux affectent… eh bien, eux-mêmes. Ils ne démontent pas tout le système d’impression. Blague à part, il y a clairement des avantages que PDI apporte à la table. Outre les améliorations globales de la stabilité du système d'impression, PDI offre un moyen d'isoler les nouveaux pilotes pour le test / débogage sans affecter le spouleur et facilite également l'identification des pilotes qui ont provoqué des pannes. Une mise en garde rapide ici – Isolation du pilote d'impression isole uniquement les composants du pilote d'impression du spouleur d'impression. Si une application charge un pilote d'impression dans son propre espace de processus et que ce pilote se bloque, il est possible que l'application se bloque également.
Avant d’entrer dans le processus d’isolation des pilotes d’impression, il est utile que vous maîtrisiez bien l’architecture d’impression. Si vous avez besoin d’un rappel, jetez un coup d’œil à notre
publier sur l'architecture d'impression de base
d'il y a quelques années.
OK, revenons à PDI. Il existe trois modes d'isolation de base pouvant être configurés pour des pilotes d'impression individuels:
-
Aucun
– dans ce mode, les composants du pilote d'impression sont chargés dans le processus de spouleur. C'est essentiellement le modèle trouvé dans les versions précédentes de Windows -
partagé
– Plusieurs pilotes définis pour l'isolation sont chargés dans un seul espace de processus partagé, distinct du processus de spouleur. Bien que cela protège le processus de spouleur, les pilotes en mode partagé peuvent s’affecter -
Isolé
– chaque pilote est chargé dans son propre espace de processus. Cela protège le spouleur des pannes de conducteur individuelles et protège également les pilotes les uns des autres
N'oubliez pas que les modes sont configurés par pilote et non par système. Un autre point à garder à l’esprit: tous les pilotes ne fonctionneront pas en mode partagé ou isolé. Les pilotes qui appellent des fonctions de spouleur ou le module de configuration d’une imprimante doivent s’exécuter en mode «aucun». Le développeur de pilotes peut indiquer si son pilote prend en charge ou non le mode d'isolation. Voyons maintenant comment fonctionne le nouveau modèle.
À chaque fois que le mode partagé ou isolé est utilisé pour un pilote d'impression, un nouveau processus – PrintIsolationHost.exe – est lancé par le programme de lancement de processus de serveur DCOM pour chaque "bac à sable d'impression". Le processeur d’impression, le module de rendu, le module de configuration et les divers fichiers de pilote sont chargés dans l’espace adresse du nouveau processus, au lieu du processus du spouleur. Le spouleur utilise essentiellement des appels de proxy pour le processeur d'impression et d'autres composants de pilote dans le processus PrintIsolationHost.exe, et DCOM est utilisé pour les communications entre processus. Remarque importante: si vous examinez attentivement le spouleur, vous constaterez que les processeurs d’impression sont chargés dans les processus spoolsv.exe et ProcessIsolationHost.exe lorsque des modes partagé ou isolé sont utilisés. Toutefois, pour le pilote d’impression que vous avez mis en mode partagé ou en mode d’isolation, tout le traitement a lieu dans le processeur du processus ProcessIsolationHost.exe. Le chargement en double des processeurs d'impression doit prendre en charge les pilotes pouvant fonctionner en mode "aucun" en même temps.
Voyons à quoi cela ressemble dans Process Explorer. Nous examinerons le mode d’isolation car c’est le plus complexe des trois modes. Dans ce mode, il existe un certain nombre de différences par rapport au modèle d'impression auquel nous avons été habitués. Comme nous l'avons mentionné ci-dessus, les processeurs d'impression et les composants de pilote d'impression de chaque pilote isolé sont chargés dans un processus PrintIsolationHost.exe distinct. Dans le processus spoolsv.exe et tous les processus PrintIsolationHost.exe, il existe une nouvelle DLL, PrintIsolationProxy.dll, qui transmet les appels à des imprimantes spécifiques entre les processus. Dans la capture d'écran ci-dessous, nous pouvons voir que le processus spoolsv.exe s'exécute normalement. Les imprimantes installées fonctionnent toutes sans mode d'isolation spécifié.
Voyons maintenant ce qui se passe lorsque nous mettons deux pilotes d’impression en mode Isolation. Initialement, vous ne voyez rien dans la vue Process Explorer. Cependant, une fois l’imprimante utilisée, les processus PrintIsolationHost.exe et le fichier PrintIsolationProxy
La raison pour laquelle vous ne voyez pas le processus PrintIsolationHost.exe apparaître immédiatement après le basculement d'un pilote en mode d'isolation est pour une meilleure gestion des ressources. Le processus est appelé en cas de besoin et fermé s'il n'est pas nécessaire. En mode partagé, le modèle d'impression est très similaire au mode isolé, à la différence que vous ne verrez qu'un processus PrintIsolationHost.exe – à moins que des pilotes ne fonctionnent également en mode d'isolation complet en même temps.
Maintenant que nous avons abordé certaines des bases de PDI, parlons de la configuration de PDI via une stratégie de groupe. Vous pouvez utiliser deux nouveaux paramètres de stratégie de groupe pour contrôler le mode d'isolation des pilotes sur les ordinateurs auxquels la stratégie s'applique. Les deux paramètres sont dans le
Configuration de l'ordinateur Modèles d'administration Imprimantes
. Les deux paramètres sont:
-
Exécuter les pilotes d'impression dans les processus isolés
– il y a deux réglages
-
désactivé
– Désactivez complètement l'isolation des pilotes, de sorte que tous les pilotes d'impression soient chargés dans le processus du spouleur d'impression, comme dans les versions précédentes du système d'exploitation. Ce serait un moyen de forcer le mode “hérité” -
Activé ou non configuré
– Permet l'isolation du pilote, auquel cas les modes d'isolation du pilote peuvent être définis selon les besoins (ou tels que spécifiés par le fabricant OEM).
-
-
Ignorer le paramètre de compatibilité d'exécution du pilote d'imprimante signalé par le pilote d'imprimante
– encore une fois, il y a deux réglages
-
Activée
– Force les pilotes signalés comme incompatibles avec PDI à fonctionner en mode "partagé" -
Désactivé ou non configuré
– quelle que soit la compatibilité d'isolation publiée dans le fichier .inf pour le pilote soit respectée
-
Les valeurs de ces stratégies sont stockées dans le registre à
HKLM LOGICIEL Stratégies Microsoft Windows NT Imprimantes
dans les valeurs suivantes:
-
PrintDriverIsolationExecutionPolicy
-
PrintDriverIsolationOverrideCompat
Une valeur de 0 = désactivé et 1 = activé. Si les paramètres de stratégie sont «Non configuré», ces valeurs n'existent pas dans le registre par défaut et le système assume les paramètres par défaut, comme indiqué ci-dessus.
Pour terminer cet article, nous allons examiner certaines des valeurs de registre qui peuvent être utilisées pour modifier le comportement des PDI, en particulier la durée de vie et le comportement de recyclage des processus PrintDriverIsolation.exe. Ces valeurs existent dans le
HKLM SYSTEM CurrentControlSet Control Print
clé.
Nom de la valeur |
Type |
La description |
PrintDriverIsolationIdleTimeout |
REG_DWORD |
Durée en millisecondes spécifiant la durée maximale pendant laquelle un processus d'isolation du pilote d'imprimante doit rester inactif avant son arrêt. |
PrintDriverIsolationTimeBeforeRecycle |
REG_DWORD |
Durée en millisecondes spécifiant la durée maximale pendant laquelle un processus d'isolation du pilote d'imprimante doit être utilisé avant sa fermeture / son redémarrage. La séquence d'arrêt et de redémarrage récupère de la mémoire potentiellement perdue par les pilotes |
PrintDriverIsolationMaxobjsBeforeRecycle |
REG_DWORD |
Spécifie le nombre maximal d'opérations pour lesquelles un processus d'isolation du pilote d'imprimante doit être utilisé avant sa fermeture / son arrêt et son redémarrage. Encore une fois, la séquence d'arrêt et de redémarrage récupère de la mémoire potentiellement perdue par les pilotes |
Dans les cas où vous pourriez penser que des pilotes isolés perdent de la mémoire ou si vous utilisez un grand nombre de processus PrintDriverIsolationHost.exe, il peut être intéressant de modifier ces paramètres.
OK les gens – c’est pour aujourd’hui. Je serai de retour demain avec un coup d'oeil à PrintBRM. Jusqu'à la prochaine fois …
Commentaires
Laisser un commentaire