Serveur d'impression

Windows 7 / Windows Server 2008 R2: isolation du pilote d'impression – Microsoft Tech Community – Bien choisir son serveur d impression

Le 9 mars 2020 - 9 minutes de lecture

Publié sur TECHNET le 8 octobre 2009

Bienvenue à tous! 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 jour du lancement! Levez la main si vous avez déjà dû faire face à un plantage du spouleur d'impression. Gardez la main levée si le problème est dû à un pilote défectueux. Continuez si vous avez déjà souhaité qu'il y ait un moyen d'isoler les mauvais conducteurs. OK – c'est presque tout de vous. L'isolement du pilote d'impression va vous faciliter la vie! Croyez-moi quand je vous dis que nos ingénieurs de support sont aussi enthousiastes à propos de cette fonctionnalité que vous.

Qu'est-ce que l'isolation du pilote d'impression? Comme son nom l'indique, cette fonctionnalité permet à certains des composants du pilote d'imprimante d'être exécutés dans un processus (ou des processus) distinct du spouleur d'impression. Ce faisant, tous les problèmes associés aux pilotes défectueux sont isolés du service de spouleur d'impression et ne provoquent pas son échec. Pour ceux d’entre vous qui existent depuis les jours de Windows NT, je suis sûr que vous vous souvenez comment un mauvais pilote d’impression peut 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’arrêtaient pas l’ensemble du système. Avec PDI, nous allons encore plus loin: les pilotes d’impression isolés qui sont défectueux affectent… enfin, eux-mêmes. Ils ne démontent pas tout le système d'impression. Mais en plaisantant, 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 fournit un moyen d'isoler les nouveaux pilotes pour les tests / débogages sans affecter le spouleur et facilite également l'identification des pilotes à l'origine des plantages. Une mise en garde ici: l'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 fonctionnement de l'Isolation du pilote d'imprimante, cela aide si vous avez une bonne compréhension de l'architecture d'impression. Si vous avez besoin d'un rappel, jetez un œil à notre

publication sur l'architecture d'impression de base

il y a quelques années.

OK, revenons à PDI. Il existe trois modes d'isolation de base qui peuvent ê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 du spouleur. Il s'agit essentiellement du modèle trouvé dans les versions précédentes de Windows

  • partagé

    – plusieurs pilotes définis pour l'isolement sont chargés dans un seul espace de processus partagé distinct du processus de spouleur. Bien que cela protège le processus du 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 pilotes individuels 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 directement les fonctions du spouleur ou le module de configuration d'une imprimante doivent s'exécuter en mode «aucun». Le développeur de pilotes peut annoncer 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 lanceur de processus du serveur DCOM pour chaque «bac à sable d'impression». Le processeur d'impression, le module de rendu, le module de configuration et les fichiers de pilotes divers sont chargés dans l'espace d'adressage du nouveau processus, au lieu du processus du spouleur. Le spouleur utilise essentiellement des proxys pour le processeur d'impression et d'autres composants du pilote dans le processus PrintIsolationHost.exe et DCOM est utilisé pour les communications interprocessus. Quelque chose à noter ici – si vous examinez attentivement le spouleur, vous constaterez que les processeurs d'impression sont chargés à la fois dans les processus spoolsv.exe et ProcessIsolationHost.exe lorsque des modes partagés ou isolés sont utilisés. Cependant, pour le pilote d'impression que vous mettez en mode partagé ou d'isolement, tout le traitement a lieu dans le processeur dans le processus ProcessIsolationHost.exe. Le chargement en double des processeurs d'impression est destiné à accueillir les pilotes qui peuvent s'exécuter en mode «aucun» en même temps.

Voyons à quoi cela ressemble dans Process Explorer. Nous allons examiner le mode d'isolement, car il s'agit du 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 du pilote d'impression pour 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 sert de proxy aux appels d'imprimantes spécifiques entre les processus. Dans la capture d'écran ci-dessous, nous pouvons voir que le processus spoolsv.exe fonctionne normalement – les imprimantes installées fonctionnent toutes sans mode d'isolement spécifié.

Voyons maintenant ce qui se passe lorsque nous mettons deux pilotes d’impression en mode Isolation. Au départ, vous ne verrez rien dans votre vue Process Explorer. Cependant, une fois l'imprimante utilisée, vous verrez les processus PrintIsolationHost.exe et PrintIsolationProxy.dll

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 est fermé lorsqu'il n'est pas nécessaire. En mode partagé, le modèle d'impression est très similaire au mode isolé, sauf que vous ne verrez qu'un seul processus PrintIsolationHost.exe – sauf si vous avez également des pilotes fonctionnant en mode d'isolation complète en même temps.

Maintenant que nous avons couvert certaines des bases de PDI, parlons de la configuration de PDI via la stratégie de groupe. Il existe deux nouveaux paramètres de stratégie de groupe que vous pouvez utiliser pour contrôler le mode d'isolement des pilotes sur les machines auxquelles la stratégie s'applique. Les deux paramètres sont dans le

Configuration ordinateur Modèles d'administration Imprimantes

. Les deux paramètres sont:

  • Exécuter des pilotes d'impression dans des processus isolés

    – il y a deux réglages

    • désactivé

      – Désactivez complètement l'isolation du pilote, ce qui entraîne le chargement de tous les pilotes d'impression 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'isolement du pilote, auquel cas les modes d'isolement du pilote peuvent être définis selon les besoins (ou comme spécifié par l'OEM)

  • Remplacer le paramètre de compatibilité d'exécution du pilote d'impression signalé par le pilote d'impression

    – encore une fois, il y a deux paramètres

    • Activée

      – Force les pilotes signalés comme incompatibles avec PDI à s'exécuter en mode «partagé»

    • Désactivé ou non configuré

      – toute compatibilité d'isolation annoncée dans le fichier .inf pour le pilote est respectée

Les valeurs de ces stratégies sont stockées dans le registre à l'adresse

HKLM SOFTWARE Policies Microsoft Windows NT Printers

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és», ces valeurs n'existeront pas dans le registre par défaut et le système assume les paramètres par défaut comme indiqué ci-dessus.

Pour conclure cette publication, nous allons examiner certaines des valeurs de registre qui peuvent être utilisées pour modifier le comportement 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 qui spécifie la durée maximale pendant laquelle un processus d'isolement du pilote d'imprimante doit rester inactif avant d'être arrêté.

PrintDriverIsolationTimeBeforeRecycle

REG_DWORD

Temps en millisecondes qui spécifie l'intervalle de temps maximal pendant lequel un processus d'isolement du pilote d'imprimante doit être utilisé avant son arrêt / redémarrage. La séquence d'arrêt et de redémarrage récupère la mémoire potentiellement perdue par les pilotes

PrintDriverIsolationMaxobjsBeforeRecycle

REG_DWORD

Spécifie le nombre maximal d'opérations qu'un processus d'isolation du pilote d'imprimante doit être utilisé avant d'être arrêté / arrêté et redémarré. Encore une fois, la séquence d'arrêt et de redémarrage récupère la mémoire potentiellement perdue par les pilotes

Dans les cas où vous pourriez suspecter des pilotes isolés qui fuient de la mémoire ou si vous avez un grand nombre de processus PrintDriverIsolationHost.exe, ces paramètres peuvent valoir la peine d'être modifiés.

OK les amis – c'est tout pour aujourd'hui. Je reviens demain avec un aperçu de PrintBRM. Jusqu'à la prochaine fois …



CC Hameed

Commentaires

Laisser un commentaire

Votre commentaire sera révisé par les administrateurs si besoin.