Ізоляція драйвера принтера в Windows 7

Падіння служби диспетчера друку (ака print spooler) внаслідок помилок в драйверах друку є суттєвою проблемою ОС сімейства Windows. Проблема посилюється тим, що помилки з драйверами друку досить важко діагностувати, а виявлення проблемного драйвера може стати головним болем для системного адміністратора. Найгірше що, збій драйвера друку принтера, завантаженого в процес черги друку, викликав збій самого спулера, в результаті в результаті вся система друку сервера перестає працювати, і ці наслідки зачіпають велику кількість користувачів і принтерів. Однак разом з виходом Windows 2008 R2 і Windows 7 всі ці проблеми повинні залишитися в минулому, адже в цих ОС з'явилася технологія Printer Driver Isolation (Ізоляції драйверів принтерів).

Як випливає з назви, технологія Printer Driver Isolation (PDI) реалізує ізоляцію драйверів принтерів в окремі процеси, відокремлені від процесу диспетчера друку (spoolsv.exe). Тому, якщо трапляється будь-яка помилка в драйвері принтера, то вона зачіпає тільки процес, які довантажити цей драйвер, а не процес spoolsv.exe, тим самим запобігаючи його падіння і покращуючи надійність сервера друку. Крім того, ця нова функція забезпечує можливість ізоляції нових версій драйверів з метою тестування або налагодження, а також можливість виявити зіпсований драйвер.

Процес, який здійснює завантаження драйверів, які повинні працювати ізольовано від "Диспетчера Печатки", називається PrintIsolationHost.exe.

Існує три режими роботи технології ізоляції драйверів:

  • None - Драйвера принтерів завантажуються процесам диспетчера друку (spooler), тобто в цьому режимі система працює як зазвичай
  • Shared - Драйвера налаштовані на роботу з одним загальним екземпляром процесу PrintIsolationHost.exe, відокремленого від процесу spoolsv.exe. Це режим роботи за замовчуванням.
  • Isolated - Кожен драйвер принтера налаштований на використання свого власного примірника процесу PrintIsolationHost.exe.

Щоб перевірити, чи підтримує драйвер принтера технологію PDI: перейдіть в наступну гілку реєстру.
HKLM \ SYSTEM \ CurrentControlSet \ Control \ Print \ Environments \\ Drivers \ Version-3 \\ PrinterDriverAttributes

Можливі значення:
0: Драйвер не підтримуєPDI
2: Драйвер принтера підтримуєPDI

Якщо ж значення відсутній, значить воно дорівнює 0, і драйвер PDI не підтримує

Як змінити режим роботи Printer Driver Isolation

Є кілька способів налаштувати режим роботи режиму ізоляції драйверів друку:

  • Конфігурація за допомогою INF-файлу драйвера друку
  • Консоль Print Management Console (PMC)
  • групові політики

INF файл драйвера друку

За допомогою inf файлу драйвера принтера можна визначити, чи підтримує драйвер PDI чи ні. Цей inf файл містить ключ DriverIsolation, який визначає підтримку PDI. Відповідно, якщо значення цього параметра 0, значить даний драйвер PDI не підтримує.

Консоль Print Management (PMC)

За допомогою нової консолі управління принтерами (PMC) можна досить просто управляти ізоляцією драйверів. Якщо відкрити консоль PMC і перейти в розділ драйверів, то в правій панелі можна побачити список встановлених в системі драйверів, а в колонці Driver Isolation буде відображатися режим роботи PDI драйвера принтера.

Щоб змінити режим роботи драйвера, потрібно натиснути правою кнопкою по потрібному драйверу і вибрати опцію 'Set Driver Isolation'. Доступні такі опції:

  • None
  • Shared
  • Isolated
  • System Default (None)

Примітки:

  • опція  System Default - означає, що драйвер працює у відповідності зі своїми стандартними настройками або настройками групової політики.
  • Також якщо групова політика 'Execute Print drivers in isolated processes' відключена (Disabled), тоді режим ізоляції PDI поміняти не вийде.

Групові політики, що дозволяють управляти ізоляцією драйверів

Існує дві настройки групової політики, що дозволяють налаштувати режим ізоляції драйверів принтерів. Знайти їх можна в розділі:

Computer Configuration \ Administrative Templates \ Printers.

Називаються вони:

  • Execute print drivers in isolated processes (Виконувати драйвери принтерів в ізольованих процесах)
  • Override print driver execution compatibility setting reported by print driver (Відхилити параметр сумісності виконання драйвера друку)

політика: Execute print drivers in isolate processes

Налаштування цієї політики визначають чи будуть драйвера принтера виконуватися в одному або окремих процесах. Якщо драйвера принтерів завантажені ізольованим процесом (або процесами), то будь-який збій в драйвері друку не приведе до падіння служби Print Spooler.

У тому випадку якщо ви активували або не налаштовувати цю політику, Диспетчер друку виконуватиме драйвера в ізольованому процесі.

Якщо ви вимкніть цю політику, то драйвера принтерів будуть виконуватися в процесі диспетчера друку (як в версіях Windows XP / 2003 і попередніх версіях ОС).
політика: Override print driver execution compatibility setting reported by print driver

Політика визначає, чи повинен Диспетчер друку перевизначати режим роботи PDI, заданий в драйвері принтера. Тобто політика активує виконання драйверів в ізольованому процесі, навіть якщо драйвер принтера не сумісний.

Якщо активувати цю політику, то спулер ігноруватиме прапор сумісності, заданий для драйвера принтера.

Якщо відключити або не налаштовувати цю політику, print spooler буде використовувати той режим ізоляції, який заданий за замовчуванням в драйвері принтера.

Крім технології Printer Driver Isolation в Windows 7 і Windows 2008 з'явилася ще дуже зручна технологія, що дозволяє істотно полегшити роботи з управління драйверами друку на термінальних серверах. Познайомиться з нею можна в статті Easy Print в Windows 2008 Server