Поделиться через


Изоляция драйвера принтера

Внимание

Современная платформа печати — это предпочтительный способ взаимодействия с принтерами Windows. Рекомендуется использовать драйвер класса "Входящие" Microsoft IPP вместе с приложениями поддержки печати (PSA), чтобы настроить возможности печати в Windows 10 и 11 для разработки устройств принтера.

Дополнительные сведения см. в статье "Современная платформа печати" и руководство по проектированию приложений поддержки печати.

Изоляция драйвера принтера повышает надежность службы печати Windows, позволяя драйверам принтеров выполняться в процессах, отдельных от процесса, в котором выполняется средство проверки печати.

Поддержка изоляции драйверов принтера реализована в операционных системах Windows 7, Windows Server 2008 R2 и более поздних версий.

Начиная с Windows 7 и Windows Server 2008 R2 драйвер принтера в папке "Входящие" должен поддерживать изоляцию драйвера принтера и работать в изолированном процессе.

В предыдущих версиях Windows драйверы принтеров всегда выполнялись в том же процессе, что и spooler. Компоненты драйвера принтера, запущенные в процессе spooler, включали следующие компоненты:

  • Печать модулей конфигурации драйвера

  • Процессоры печати

  • Модули отрисовки

Сбой одного компонента драйвера печати может привести к сбою подсистемы печати, остановке операций печати для всех пользователей и всех компонентов печати.

Начиная с Windows 7 и Windows Server 2008 R2 администратор может настроить драйвер принтера для выполнения в изолированном процессе, который отделен от процесса spooler. Изолировав драйвер, администратор может предотвратить сбой в компоненте драйвера от остановки службы печати.

Дополнительные сведения о функциях spooler см. в разделе "Функции и структуры компонентов spooler".

Поддержка изоляции драйверов в INF-файлах

По умолчанию, если INF-файл, устанавливающий драйвер принтера, не указывает, что драйвер поддерживает изоляцию драйверов, установщик класса принтера настраивает драйвер для запуска в процессе spooler. Однако если INF-файл указывает, что драйвер поддерживает изоляцию драйверов, установщик настраивает драйвер для запуска в изолированном процессе. Администратор может переопределить эти параметры конфигурации и указать для каждого драйвера, следует ли запускать драйвер в процессе spooler или в изолированном процессе.

Для поддержки изоляции драйверов INF-файл, устанавливающий драйвер принтера, может использовать ключевое слово DriverIsolation , чтобы указать, поддерживает ли драйвер изоляцию драйвера принтера. Параметр DriverIsolation=2 указывает, что драйвер поддерживает изоляцию драйверов. Параметр DriverIsolation=0 указывает, что драйвер не поддерживает изоляцию драйверов. Опущение ключевого слова DriverIsolation из INF-файла имеет тот же эффект, что и параметр DriverIsolation=0.

Функции spooler для параметров изоляции драйверов

В следующей таблице показаны функции spooler, которые администратор может использовать для настройки параметров изоляции драйверов.

Имя функции Операция
GetPrinterDataEx Получите параметры изоляции драйверов для принтера.
SetPrinterDataEx Задайте параметры изоляции драйверов для принтера.
EnumPrinterDataEx Перечисление параметров изоляции драйверов для принтера.
FindFirstPrinterChangeNotification, FindNextPrinterChangeNotification Запрос уведомлений об изменениях параметров изоляции драйверов для принтера.

Формат данных выглядит следующим образом:

  • Драйвер в каждой группе разделен "\"

  • Каждая группа драйверов разделена "\\"

Первая группа загружает драйвер в процессы spooler. Каждая следующая группа загружает драйверы в изолированных процессах для каждой группы. Вторая группа считается "общей" группой, в которой по умолчанию загружаются другие драйверы, поддерживающие изоляцию.

Настройка режима изоляции драйверов с помощью администрирования

Администратор компьютера может использовать консоль управления печатью Windows или вызвать функции spooler Windows для настройки параметров изоляции драйверов для каждого драйвера принтера, установленного на компьютере. Администратор настраивает драйвер для использования одного из параметров, перечисленных в следующей таблице.

Режим изоляции драйверов Значение
Совмещаемая блокировка Запустите драйвер в процессе, который предоставляется другим драйверам принтера, но отличается от процесса spooler.
Изоляция Запустите драйвер в процессе, который отделен от процесса spooler и не предоставляется другим драйверам принтера.
нет Запустите драйвер в процессе spooler.

В идеале драйвер принтера может работать в общем режиме. То есть он выполняется в изолированном процессе, совместно используемом с другими драйверами принтера, но отдельно от процесса spooler. Драйвер может потребоваться запустить в изолированном режиме, если он может выполняться в процессе отдельно от процесса spooler, но имеет трудности с общим доступом к процессу с другими драйверами. Например, плохо разработанный драйвер может иметь имена файлов, которые конфликтуют с соответствующими драйверами или различными версиями одного драйвера, или драйвер может сбой часто или утечка памяти, которая препятствует работе других драйверов, работающих в том же процессе.

Чтобы обеспечить устранение неполадок, администратор домена может отключить функцию изоляции драйверов на компьютере в домене, или администратор может принудительно запустить все драйверы принтера на компьютере в изолированном режиме. В изолированном режиме каждый драйвер должен выполняться в процессе отдельно от spooler и других драйверов принтера.

Если изоляция драйверов отключена групповой политикой, изоляция отключена для всех драйверов принтера. Если изоляция включена, отдельные драйверы проверяются в режиме. Если драйвер имеет набор режимов изоляции, он выполняется в общем, изолированном или ни в одном режиме на основе записи реестра. Однако если драйвер не имеет режима изоляции и совместим с изоляцией, он работает в общем режиме. Если драйвер несовместим с режимом, переопределение групповой политики определяет, работает ли драйвер в общем режиме или в режиме нет.

На следующей диаграмме показана карта принятия решений для выбора режима изоляции драйвера:

блок-схема для выбора режима изоляции драйвера.

Функции spooler, разрешенные при изоляции драйвера

В изоляции драйверов разрешены только определенные функции.

функции Spoolss.dll

Следующие функции экспортируются spoolss.dll и доступны для подключаемых модулей spooler путем связывания с spoolss.lib.

Функции WinSpool.drv

Следующие функции экспортируются winspool.drv и доступны для подключаемых модулей spooler путем связывания с Winspool.h.

См. также

Функции и структуры компонентов spooler