Модуль отрисовки XPSDrv
Внимание
Современная платформа печати — это предпочтительный способ взаимодействия с принтерами Windows. Рекомендуется использовать драйвер класса "Входящие" Microsoft IPP вместе с приложениями поддержки печати (PSA), чтобы настроить возможности печати в Windows 10 и 11 для разработки устройств принтера.
Дополнительные сведения см. в статье "Современная платформа печати" и руководство по проектированию приложений поддержки печати.
Модуль отрисовки драйвера принтера XPSDrv содержит фильтры, отрисовывающие содержимое файла spool XPS для вывода на принтер. Набор фильтров отрисовки для драйвера создается и выполняется в конвейере фильтров. Диспетчер конвейеров фильтров (FPM) управляет фильтрами, а межфильтровый коммуникатор (IFC) управляет взаимодействием между фильтрами.
На следующей схеме показан конвейер фильтра.
Корпорация Майкрософт предоставляет следующие компоненты драйвера XPS:
Диспетчер конвейеров фильтра
Межфильтровый коммуникатор
Контейнер свойств
Диспетчер конвейера фильтра должен:
Загрузка и инициализация фильтров.
Управление данными между фильтрами.
Выгрузите фильтры после завершения задания печати.
Межфильтровые коммуникации управляют передачей данных между фильтрами и диспетчером конвейеров фильтров управляет межфильтровными коммуникациями.
В следующем процессе описывается, что происходит с набором фильтров в конвейере:
Диспетчер конвейеров фильтра считывает файл конфигурации конвейера фильтра (FPC).
Фильтры, которые указывает FPC, загружаются.
Конвейер фильтра инициализирован, а диспетчер конвейера фильтров запускает конвейер фильтра.
Первый фильтр в конвейере считывает данные XPS через XPS или интерфейсы потоков, которые предлагает диспетчер конвейеров фильтров, а затем фильтр обрабатывает содержимое.
Первый фильтр отправляет обработанные данные XPS во второй фильтр с помощью интерфейса, предоставляемого интерфильтром Communicator.
Интерфильтр Коммуникации сохраняет промежуточные результаты обработки до тех пор, пока второй фильтр не будет готов.
Шаги 1–6 повторяются из фильтра до тех пор, пока результаты последнего фильтра не отправляются в порт, определенный драйвером для вывода.
Если принтер использует XPS в качестве языка описания страницы (PDL), а другой обработки не требуется, можно использовать пустой ("сквозной") конвейер. Если XPS не является PDL для принтера, необходимо написать фильтр, который преобразует XPS в PDL принтера, а также любую другую обработку, которую требуется выполнить.
Чтобы разработать драйвер XPS, необходимо создать следующие компоненты:
Вы также можете добавить поддержку запроса на печать в модуль отрисовки XPSDrv