|
В идеале, когда вы подключаете новый принтер к компьютеру с Windows, он должен сразу же начать работать. Вы не должны отвлекаться на поиск подходящего драйвера. Это одно из больших преимуществ Windows 8. В ней приложения не зависят от специфики принтеров, поэтому вы не должны беспокоиться о том, какой принтер вы установили. Как мне и моей группе удалось этого добиться? Раньше, в предыдущих версиях Windows мы поставляли множество драйверов принтеров. В Windows Vista было около 4500 драйверов, а в Windows 7 — около 2100. Несмотря на то, что в Windows 7 стало вдвое меньше драйверов, чем в Windows Vista, в ней было больше шансов найти драйвер для большинства популярных принтеров. В Windows Vista мы поддерживали множество старых принтеров, которые вышли из массового использования, поэтому набор поддерживаемых устройств был не таким актуальным как в Windows 7. В общей сложности Windows поддерживает десятки тысяч моделей принтеров. К ним относятся и принтеры, драйверы для которых доступны только через Windows Update или веб-сайты производителей. Когда мы видим, что принтер не работает, это часто объясняется тем, что производитель решил заблокировать его установку. Мы взаимодействуем с производителями, добиваясь, чтобы они обновляли свои установочные пакеты, но для этого требуется время. Когда мы выпускаем новую версию Windows, мы берем драйверы из предыдущей версии и публикуем их в Windows Update. Несмотря на то, что эти устройства могут потерять популярность, достаточно просто подключить их и они автоматически заработают. Парк принтеровЛюди пользуются своими принтерами в среднем от пяти до семи лет. Когда мы хотим добавить поддержку принтеров, мы должны думать о будущем и задавать вопросы наподобие: «Какими устройствами пользуются люди? Какие устройства были самыми популярными в течение предыдущих нескольких лет? Какие устройства будут самыми популярными в будущем?». На последний вопрос сложно ответить, поскольку вскоре после выхода новых версий и обновлений Windows производители принтеров выпускают устройства, о которых мы ничего не знаем. Значит, со временем набор устройств, поддерживаемых нами в любой версии Windows, устаревает. В любой момент времени примерно 100 моделей принтеров составляют примерно 50 процентов от всех установленных принтеров. Если мы хотим поддерживать 75 процентов используемых в настоящее время моделей, мы должны поддерживать примерно 300 моделей. Чтобы дойти до 95 процентов, мы должны поддерживать более 1000 моделей. Проблема еще более усложняется тем, что принтеры, образующие эти наборы из 100, 300 или 1000 устройств, все время меняются. 100 принтеров, занимающие 50 процентов рынка сегодня, — это не те же самые 100 принтеров, которые будут составлять 50 процентов на следующей неделе, или в следующем месяце, или, тем более, в следующем году. Каждый день множество людей покупает и устанавливает новые принтеры. Раньше мы решали эту проблему по методу грубой силы. У всех крупных производителей принтеров были представители, которые сидели в офисах в Редмонде и напрямую взаимодействовали с Microsoft, регистрируя свой исходный код в Windows. В результате в каждой новой версии Windows создавался совершенно новый набор встроенных драйверов. Это работало, но не очень эффективно. В Windows 8 мы выбрали совершенно другой подход. Мы прекратили поставлять множество драйверов принтеров в составе Windows. Вместо этого мы построили инфраструктуру драйверов классов для печати (print class driver). Эта инфраструктура расширяема, и, в то же время, поддерживает печать на существующих устройствах. Кроме того, она помогает производителям поддерживать новые устройства, даже те, которые еще не разработаны. Благодаря возможности поддерживать новые принтеры и те, что планируется выпустить, количество принтеров, поддерживаемых инфраструктурой драйверов классов для печати Windows 8, будет все время расти. Имея инфраструктуру драйверов классов для печати, мы можем приблизиться к созданию среды печати без драйверов. В самом деле, вам не потребуется где-то искать драйвер. Вместо этого принтер просто будет работать во взаимодействии с системой печати Windows. Чтобы по-настоящему печатать без драйверов, необходимо изменить подход к разработке большинства принтеров. Инфраструктура классов драйверов для печати поддерживает эту идею, но, помимо этого, важно, чтобы ее поддерживало как можно больше существующих устройств. Сокращение потребления ресурсовПомимо огромного прогресса в увеличении количества поддерживаемых устройств, нам удалось уменьшить количество требуемых ресурсов. Прежде всего, мы сократили количество дискового пространства, необходимого для поддержки принтеров и устройств обработки изображений с 768 МБ в Windows Vista до примерно 184 МБ в Windows 8. Это среднее значение для различных редакций и архитектур Windows 8. Мы также добились, чтобы набор устройств, напрямую поддерживаемых Windows, стал более актуальным. Это огромное усовершенствование Windows 8. Сокращение используемого пространства автоматически приводит к увеличению пространства, доступного для пользователей устройств с ограниченным размером хранилища, что, как мы ожидаем, будет отличительной чертой некоторых компьютеров с Windows RT. Модель драйверов принтеров Windows 8 помогает нам добиться, чтобы наши партнеры, производящие оборудование, могли опираться на код, который не будет особо меняться от одной версии Windows к другой. Мы сможем более полезно потратить свои ресурсы, повышая качество и производительность, вместо того чтобы постоянно пополнять набор драйверов. Архитектура драйверов классов для печатиПомимо создания архитектуры, отвечающей требованиям приложений из Windows Store, мы хотели добиться, чтобы модель работала и с существующими устройствами. Нужно было использовать технологии, знакомые производителям принтеров, чтобы им было проще реализовать новую технологию в своих драйверах. Драйвер принтера выполняет несколько ключевых операций, необходимых для того, чтобы можно было выполнить печать: - Настройка позволяет изменить параметры: ваши пожелания (например, установить режим двусторонней печати) преобразовываются в специфические команды, необходимые принтеру, чтобы их выполнить. Конфигурационные параметры можно настраивать через UI (пользовательский интерфейс).
- При рендеринге содержимое, выводимое на печать, преобразовывается из формата системы печати Windows в формат, понятный принтеру. В некоторых случаях принтер может напрямую работать со встроенным форматом печати Windows (XPS). Для таких устройств можно ничего не делать, если только пользователь не хочет выполнить какую-то дополнительную обработку при рендеринге (например, вывести несколько страниц на один физический лист бумаги). Часть драйвера, которая выполняет рендеринг, называется фильтром рендеринга.
- Принтер информирует пользователя о том, что что-то произошло, через уведомления о событиях: завершении задания, замятии бумаги или о том, в принтере кончились чернила.
Конфигурационный интерфейсСущественное отличие модели драйверов Windows 8 от старой модели драйверов — то, как реализован интерфейс. В старой модели драйверов принтеров конфигурационный UI встраивали в драйвер. В модели драйверов Windows 8 UI производителя полностью отделен от драйвера. Windows 8 автоматически покажет корректный UI. Такая архитектура лучше по многим причинам: UI управления принтером — теперь приложение, которое можно вызывать при печати из приложений Windows Store или Windows-приложений для настольных компьютеров. Благодаря этому производители принтеров могут обеспечить более комфортную жизнь пользователям. Если производитель не реализовал конфигурационный UI для своего устройства, то Windows предложит стандартный UI, который можно использовать с любым принтером. Однако когда производитель принтеров решит вложить средства в реализацию собственного интерфейса для своего устройства, он сможет создать приложение, замещающее стандартный UI Windows. Тогда, когда вы решите изменить конфигурацию устройства или когда конфигурация устройства поменяется в процессе печати (например, при замятии бумаги), Windows покажет собственное приложение производителя вместо стандартного UI. РендерингОдна из самых важных функций драйвера принтера — получить содержимое, которое сгенерирует приложение, когда вы выполните вывод на печать, и преобразовать его в нечто, понятное принтеру. Это одна из самых сложных областей разработки драйверов классов для печати Windows 8. Приложения, подобные Word или Photoshop, используют графические команды для прорисовки содержимого на экране или принтере. Когда они это делают, система печати принимает содержимое и преобразовывает его в XPS, если это необходимо. Затем она вызывает драйвер (точнее, часть драйвера — фильтр рендеринга), чтобы преобразовать содержимое в подходящий формат. Затем содержимое направляется на принтер, и ваш файл печатается. Пожалуй, рендеринг — одна из самых сложных проблем при поддержке широкого круга принтеров. Некоторые более дорогие принтеры поддерживают стандартные языки описания страниц (page description language, PDL), такие как PostScript, Printer Command Language (PCL) и XPS. При производстве устройств подешевле, для массового потребителя стремятся сэкономить, и многие из них поддерживают собственнические методы отправки информации о страницах на принтер. Одни производители поддерживают только лишь несколько языков, используемых во всей их продуктовой линейке. Другие могут менять язык от одной модели к другой, пытаясь добиться максимума от аппаратуры своих принтеров. В результате драйверы принтеров и аппаратура принтеров находятся в отношении «1 к 1».. Представьте каждый PDL как полный драйвер принтера. Легко видеть, что для поддержки большего количества принтеров требуется, чтобы количество драйверов постоянно росло. Это можно немного упростить. Можно создать драйвер, поддерживающий несколько устройств. Мы часто видим драйверы, поддерживающие серии принтеров. Но дело в том, что Windows 7 и предыдущие версии Windows ничего не делали для поддержки такого подхода к разработке. Модель драйверов принтеров в Windows 8 поддерживает идею о том, что PDL (или драйвер) можно связать с несколькими устройствами. Мы взаимодействовали с нашими партнерами, производящими принтеры, добиваясь, чтобы их устройства имели идентификаторы, которые позволяли бы получить общее представление о том, как поддерживать устройства. Мы называли их идентификаторами совместимости (compatible ID). Если у устройства имеется идентификатор совместимости, указывающий, что оно поддерживает XPS, то система печати будет знать, что для этого устройства не нужно искать драйвер, специфичный для модели. Достаточно просто установить для него универсальный XPS-драйвер. Windows понимает, что устройство является стандартным XPS-принтером и с ним можно работать соответствующим образом. Конечно, Windows понимает и то, что это принтер Fabrikam 1000 (или еще какой-то), поэтому, если имеется драйвер, специфичный для модели, то Windows его установит. Но если для принтера нет драйвера, Windows будет печатать на нем через драйвер класса. Таким образом, в нашем примере используется набор фильтров рендеринга, являющийся частью модели драйверов классов. Вы можете установить их для любых устройств, имеющих соответствующий идентификатор совместимости. Логическое расширение этой идеи — то, что вполне может быть, что будущие устройства будут совместимыми с драйверами классов для печати из Windows 8. Мы сотрудничали со многими производителями принтеров, и вес они планировали реализовать идентификаторы совместимости в своих устройствах. Поэтому количество принтеров, поддерживаемых Windows 8, будет все время расти. Многие люди получат возможность сразу же приступить к работе со своими принтерами без поиска драйверов. Как быть с устройствами, у которых собственнические языки рендеринга? Драйверы классов для печати поддерживают и эту модель, но с одним недостатком: требуется отдельный фильтр рендеринга для каждого небольшого набора моделей, «разговаривающих» на том или ином уникальном языке. Без этого не обойтись. В Windows 8 мы поддерживаем набор фильтров для ряда популярных моделей. Однако, как я уже говорил, мы сотрудничаем с производителями принтеров, стремясь улучшить эту ситуацию. Мы рассчитываем, что в будущем производители станут выпускать принтеры, которые будут более простым образом взаимодействовать с драйверами классов. Печать из Windows RTСокращение количества ресурсов, используемых драйверами классов для печати, напрямую сокращает потребление ресурсов системой Windows. Это особенно важно в случае Windows RT. Версия 3 архитектуры драйверов принтеров была весьма расширяемой и за многие годы эволюционировала в модель, которая поощряла разработку больших и сложных драйверов принтеров. Некоторые драйверы устанавливали службы, которые выполнялись все время. Это приводило к исчерпанию заряда батарей и потерям процессорного времени. Необходимость поддержки печати в Windows RT и всеобщее желание сделать печать эффективнее привели к разработке архитектуры, которая более жестко контролирует, что может делать драйвер. Часть среды печати, отвечающая за UI, — теперь полностью отдельный компонент, и это приложение, а не часть драйвера. Это также означает, что этот компонент не является обязательным. Драйверы будут отлично работать и со стандартным UI печати от Microsoft. Кроме того, мы упростили архитектуру драйверов, сделав ее более эффективной в плане энергопотребления за счет избавления от зависимостей между службами и снижения вероятности того, что в драйвер включат дополнительное ПО. В модели драйверов мы существенно изменили подход к установке драйверов принтеров. В Windows 7 и предшествующих версиях Windows все драйверы принтеров хранились в Driver Store. Когда вы подключали принтер, мы должны были найти подходящий драйвер в хранилище принтеров и скопировать его в специальное место, где диспетчер очереди печати мог бы его использовать. В Windows 8 мы избавились от этого излишнего копирования, несколько уменьшив объем дискового ввода-вывода. Диспетчеру очереди теперь сразу же известно, как найти драйвер в хранилище драйверов. Архитектура драйверов принтеров Windows 8 — большой шаг вперед. Она отлично поддерживает множество принтеров, которые уже используются людьми. Кроме того, она поддерживает будущие устройства, предоставляя быструю и компактную инфраструктуру драйверов классов, встроенную в ОС. Обеспечивается высокая производительность, и при этом не нужно много дискового пространства.
|
|