Иван Коробко
Сетевое сканирование с помощью МФУ от HP
Процедура инсталляции драйверов и необходимого программного обеспечения сетевых МФУ – достаточно длительный процесс, в результате которого на компьютер клиента устанавливаются лишние программное обеспечение и устройства. Давайте вычленим из дистрибутива необходимые компоненты.
Все знают о надежности черно-белых принтеров и сканеров, созданных инженерами компании HP. Несколько лет назад под этой маркой появились многофункциональные устройства: принтер, сканер, копировальный аппарат, а иногда и факс теперь объединены в одном устройстве.
МФУ со временем эволюционировали: сначала была реализована поддержка только USB-интерфейса. Сетевое подключение этих устройств можно было обеспечить с помощью Jet Direct. Принтер при таком подключении функционировал прекрасно, сканер давал частые сбои. Позже этот недостаток был устранен. В настоящее время МФУ поддерживает LAN и USB-интерфейсы.
Несмотря на это, основной недостаток – неудобное программное обеспечение – не был устранен. Привожу список недостатков входящего в комплект программного обеспечения:
- длительное время установки (30-40 минут);
- при установке сетевого МФУ создается локальный принтер на клиенте;
- нестабильная работа программы сканирования при подключении МФУ как сетевого устройства;
- установка графического интерфейса для драйвера принтера, что неблагоприятно сказывается на скорости работы МФУ.
Несмотря на прекрасно реализованную аппаратную часть, программная часть сильно недоработана. В связи с этим предлагается вычленить из прилагаемого к МФУ компакт-диска драйверы принтера и сканера. Поскольку в настоящее время в продаже только МФУ с поддержкой сети (например, HP 3390, HP 2727), то вычленять программу сканирования не нужно, поскольку мастер работы со сканером и камерой входит в состав операционной системы Windows 2K. В этой статье не будут рассматриваться операционные системы Windows 9x, поскольку они сняты с поддержки. Для предыдущих моделей МФУ c USB-интерфейсом необходимо использовать Jet Direct для преобразования USB и LAN. Для управления такого рода системой необходимо специфическое программное обеспечение. В противном случае невозможно будет отсканировать изображения с помощью таких программ, как Photoshop или ACDSee. Если принято решение отказаться от использования программы сканирования HP, то рекомендуется использовать аналогичную программу ScanVue [1], в которой реализована связка USB-LAN.
Структура дистрибутива для МФУ HP
Все МФУ, созданные HP, можно разделить по аппаратной поддержке на 2 группы: с интегрированным сетевым интерфейсом и без него. К МФУ с встроенным сетевым интерфейсом относятся такие модели, как HP 3390, 3392, 3050, 3052, 3055, M2727 и т. д. К МФУ без поддержки сети – HP 3300, 3320, 3330, 3380 и др.
В состав любого дистрибутива МФУ входят:
- драйверы принтера (PCL5, PCL6, PS);
- драйвер сканера (USB, LAN);
- драйвер DOT4 (USB 1.0, 2.0);
- программное обеспечение.
Разделим дистрибутив на составные части. Основная задача – вычленить из него драйверы принтера и сканера. Для этого необходимо проанализировать имеющиеся на диске INF-файлы.
Поиск INF-файлов для установки сканера и принтера
Каждый INF-файл, представляющий собой текстовый файл в кодировке ASCII, содержит в себе секции. Такие секции, как [version], [manufacture] или [strings], стандартизованы и содержат список параметров, определяющих назначение INF-файла. Подробное описание обязательных разделов приведено в статье [2].
Для идентификации устройств в INF-файле в разделе [version] отвечают два параметра: Class и ClassGuid. Каждому классу соответствует определенный GUID. Ошибка в названии класса устройства или идентификатора будет фатальной. В таблице 1 приведен список широко используемых устройств и соответствующие им значения параметров Class и ClassGuid (полный список классов и идентификаторов безопасности приведен в [3]).
На каждом диске имеется только один INF-файл, позволяющий установить драйвер принтера, и один, позволяющий установить драйвер сканера. Пользуясь данными в таблице 1 необходимо найти два INF-файла, относящихся к классам Print (для принтера) и Image (для сканера).
На рис. 1 показана взаимосвязь указанных классов и идентификаторов безопасности с реестром. Описание классов и устройств (папки 0000, 0001 и т. д.) располагается в ветви реестра HKLM\SYSTEM\CurrentControlSet\Control\Class\{***}, где {***} – идентификатор безопасности.
Рисунок 1. Взаимосвязь INF-файла и реестра
Найденные INF-файлы необходимо скопировать на жесткий диск каждый в свою папку, например, DRV_Printer, DRV_Scaner и т. д. Название папки произвольно и определяется пользователем. Теперь следует установить список необходимых для установки драйвера файлов.
Драйвер для принтера
В комплект дистрибутива входят PCL5, PCL6 и PostScript-драйвера. Для вычленения драйвера необходимо проанализировать INF-файл и скопировать в соответствующую ему папку все встречающиеся библиотеки. Однако это решение не самое оптимальное, поскольку встроенный графический модуль значительно замедляет скорость печати, работа драйвера может быть нестабильной. Рекомендуется использовать встроенный в операционную систему PS-драйвер. О том, как это сделать, подробно рассказано в статье [2].
Для реализации этого решения необходимо найти PPD-файл, который находится на диске в CAB-файле, имя и местоположение которого совпадают с INF-файлом. Все INF-файлы обычно находятся в корневом каталоге компакт-диска.
Драйвер для сканера
Программа, находящаяся на диске, устанавливает все необходимые устройства и программы. INF-файлы, находящиеся на диске, изменены таким образом, чтобы ими можно было управлять программно. Наша задача – извлечь из дистрибутива драйверы сканера и убрать все лишнее из INF-файла.
Драйвер для сканера HP состоит из нескольких файлов:
- INF-файл. Обеспечивает установку драйвера.
- CAT-файл (необязателен). Файл цифровой подписи драйвера.
- DLL-файл. Hewlett-Packard WIA minidriver.
- DLL-файл. Hewlett-Packard WIA ScanJet VendorSetup Extension.
- DLL-файл. PLS TULIP Scan Module.
- DLL-файл. TWAIN Data Stub DLL.
При поверхностном сравнении дистрибутивов от разных принтеров почти невозможно найти ничего общего. При ближайшем рассмотрении оказывается, что драйверы, кажущиеся разными, идентичны. Различаются лишь названия файлов. Для сбора комплекта драйверов требуется найти библиотеки. Для этого достаточно определить описание библиотеки, войдя во вкладку «Версия» в свойствах DLL-файла (см. рис. 2).
Рисунок 2. Библиотеки — драйвер сканеров HP
Порядок работы INF-файла
Точкой входа в INF-файл при попытке его инсталляции с помощью мастера является обязательный раздел [Version], в котором должны быть следующие ключи (см. листинг 1):
- Signature. Принимает одно из трех значений: $CHICAGO$ (для всех ОС), $Windows 95$ (для Windows 9x) или $Windows NT$ (для Windows 2K). Оптимально использовать значение $CHICAGO$.
- Class. Название класса устройства. Для сканера соответствует единственное значение IMAGE (см. таблицу 1).
- Class. Глобальный идентификатор безопасности устройств. Для сканеров соответствует единственное значение {6bdd1fc6-810f-11d0-bec7-08002be2092f} (см. таблицу 1).
- Provider. Значение данного параметра произвольно. При его отсутствии во время установки возникает ошибка (см. рис. 3).
- DriverVer (необязательный параметр). Версия драйвера, например 10/03/2006, 1.0.0.0.
- CatalogFile (необязательный параметр). Ссылка на файл с расширением CAT, содержащий цифровую подпись. Например, hppasc07.cat.
Листинг 1. Раздел [Version][Version]Signature = "$CHICAGO$"Class = IMAGEClassGUID = {6bdd1fc6-810f-11d0-bec7-08002be2092f}Provider = "any"
Рисунок 3. Ошибка при отсутствии ключа Provider в разделе [Version]
Таблица 1. Классы часто используемых типов устройств
Тип устройства
|
Класс устройства (Class)
|
Идентификатор безопасности (ClassGuid)
|
USB
|
USB
|
{36fc9e60-c465-11cf-8056-444553540000}
|
CD/DVD
|
CDROM
|
{4d36e965-e325-11ce-bfc1-08002be10318}
|
Видеоадаптер
|
Display
|
{4d36e968-e325-11ce-bfc1-08002be10318}
|
Принтер
|
Printer
|
{4d36e979-e325-11ce-bfc1-08002be10318}
|
Клавиатура
|
Keyboard
|
{4d36e96b-e325-11ce-bfc1-08002be10318}
|
Монитор
|
Monitor
|
{4d36e96e-e325-11ce-bfc1-08002be10318}
|
Мышь
|
Mouse
|
{4d36e96f-e325-11ce-bfc1-08002be10318}
|
Сетевая карта
|
Net
|
{4d36e972-e325-11ce-bfc1-08002be10318}
|
COM и LPT-порты
|
Ports
|
{4d36e979-e325-11ce-bfc1-08002be10318}
|
Звуковая карта
|
Sound
|
{4d36e97c-e325-11ce-bfc1-08002be10318}
|
SCSI и RAID-контроллеры
|
SCSIAdapter
|
{50dd5230-ba8a-11d1-bf5d-0000f805f530}
|
Контроллер IEEE 1394
|
1394
|
{6bdd1fc1-810f-11d0-bec7-08002be2092f}
|
Сканеры и камеры
|
Image
|
{6bdd1fc6-810f-11d0-bec7-08002be2092f}
|
После анализа раздела [Version] осуществляется чтение раздела [Manufacture], в котором описывается название фирмы производителя оборудования (см. рис. 4).
Рисунок 4. Распределение драйверов для различных операционных систем в INF-файле
Значением ключа(ей) в этом разделе является список разделов. К одному из них осуществляется переход в зависимости от типа операционной системы.
В INF-файле могут быть использованы следующие суффиксы, идентифицирующие ее версию:
- .x86. Платформа Intel 80x86, 32-bit.
- .ia64. Платформа x86, 64-bit.
- .amd64. Архитектура процессора, разработанная AMD, 64-bit.
Структура любого из дочерних разделов следующая: каждая строка состоит из ключа, название которого отражается в списке устанавливаемого оборудования при запуске мастера, обеспечивающего установку сканера. Ключ обычно состоит из двух значений, разделенных запятой: первое из них – название раздела, к которому осуществляется переход при выборе оборудования. Второе – уникальный идентификатор модели устройства. Он стандартизован и не может быть изменен. Сетевой идентификатор не имеет никакого префикса, USB- и SCSI-идентификаторы имеют соответствующие префиксы.
Внимание! Если в INF-файле присутствует раздел [ControlFlags] с ключом ExcludeFromSelect=*, удалите его целиком. В противном случае список устанавливаемого оборудования будет пуст.
По умолчанию мастер установки устанавливает USB-драйвер. Для того чтобы избежать этого, необходимо удалить лишние идентификаторы и ликвидировать разделы операционных систем, которые не используются на предприятии (см. рис. 4).
Несмотря на многообразие операционных систем, перечисленных в файле, список библиотек одинаков для всех ОС. Исключение составляют 64-битные библиотеки и настройки реестра Windows 2000. Проанализировав все блоки INF-файла, читатель обнаружит, что разница существует только в 32- и 64-битных устройствах, отдельно от них стоит Windows 2000, которая не рассматривается. Таким образом, позиционируя МФУ как сетевое устройство, упростим листинг, приведенный на рис. 4 (см. листинг 2а или 2б).
Оба листинга будут работать под Windows XP (32-бит) и Windows Vista (32-бит). Принципиальная разница заключается в том, что попытка установить драйвер, описанный листингом 2а, в операционных системах, кроме Windows XP или Vista (32-бит), закончится неудачей – будет выведено сообщение о том, что оборудование не найдено. Используя второй вариант, во всех версиях драйвер будет установлен, однако работать не будет. Поэтому рекомендуется использовать первый вариант, в котором все описатели устройства для разных операционных систем ссылаются на один раздел – WIA_2727nf_NW.
Листинг 2а. Определение списка устанавливаемых устройств
[Manufacturer]
"Hewlett-Packard"=HP,NTx86.5.1,NT.6.0
[HP]
; Windows XP
[HP.NTx86.5.1]
"HP LaserJet M2727nf MFP"=WIA_2727nf_NW,vid_03f0&pid_4D17&IP_SCAN
;Windows Vista
[HP.NT.6.0]
"HP LaserJet M2727nf MFP"=WIA_2727nf_NW,vid_03f0&pid_4D17&IP_SCAN
Листинг 2б. Определение списка устанавливаемых устройств
[Manufacturer]
"Hewlett-Packard"=HP
; Все версии Windows
[HP]
"HP LaserJet M2727nf MFP"=WIA_2727nf,vid_03f0&pid_4D17&IP_SCAN
Следующий раздел – WIA_2727nf_NW – является основным. С его помощью осуществляется управление установкой драйвера. В нем указаны ссылки на другие разделы, с помощью которых осуществляются настройка реестра, копирование и регистрация библиотек. Имя раздела назначается произвольно.
В этом и взаимосвязанных с ним разделах осуществляются настройка реестра, регистрация библиотек. Их описание выходит за рамки статьи. Для обеспечения успешной установки драйверов необходимо выполнить ряд рекомендаций. В таблице 2 приведены параметры реестра, описанные в INF-файле, и их возможные значения, от которых зависят тип и способ подключения сканера.
Таблица 2. Параметры сетевого сканирования
Параметр
|
Тип данных
|
Значения
|
Описание
|
Capabilities
|
DWORD
|
0x31 – USB + LAN
0x20 – USB
|
Определяется тип сканера: с поддержкой сетевого интерфейса и без нее
|
TuipIOType
|
DWORD
|
0х5
|
Определяется тип интерфейса:
0х1 – USB;
0х2 – LPT;
0х3 – SCSI;
0х4 – DOT4;
0х5 – TCP/IP;
0х6 – USB2;
0х7 – Fireware
|
PortSelect
|
REG_SZ
|
NO
|
Назначается порт сканирования, например LPT1, FILE. Для сетевого сканирования значение всегда NO
|
CreateFileName
|
REG_SZ
|
AUTO
|
Имя файла, в который осуществляется сканирование. Поскольку оно назначается программой сканирования, то параметр CreateFileName принимает значение AUTO
|
После завершения процесса установки драйвера необходимо к нему прилинковать само устройство. В таблице 3 приведены параметры и шаблон их значений в зависимости от модели. Обратите внимание, что для МФУ, поддерживающего сетевой интерфейс, формат значений отличается от USB. Значения перечисленных в таблице 3 строковых параметров должны быть указаны в двух ветвях реестра (где хххх – порядковый номер устройства, присваиваемый автоматически при создании камеры или сканера в соответствующей папке панели управления):
- HKLM\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\хххх\DeviceData;
- HKLM\SYSTEM\CurrentControlSet\Enum\Root\IMAGE\хххх\Device Parameters.
Таблица 3. Параметры линкования МФУ к драйверу
Параметр
|
Значение
|
Описание
|
USB
|
NetworkDeviceID
|
\macaddr:xxxxxxxxxxxx\port:0 или \macaddr:xxxxxxxxxxxx\port:1
|
Поскольку LAN-интерфейс не поддерживается, то указываются только МАС‑адрес и номер порта. Не рекомендуется менять имя порта, указанного в INF-файле
|
NetworkHostName
|
Не назначается
|
Значение не присваивается, т.к. отсутствует встроенная поддержка в сети
|
PortID
|
ххх.ххх.ххх.ххх
|
IP-адрес подключенного Jet Direct
|
LAN + USB
|
NetworkDeviceID
|
\\hostname: HP2727_3.domain.ru \\ipaddr:xxx.xxx.xxx.xxx\\guid:\\macaddr:xxxxxxxxxxxx\\port:1 или \\hostname: HP2727_3.domain.ru \\ipaddr:xxx.xxx.xxx.xxx\\guid:\\macaddr:xxxxxxxxxxxx\\port:0
|
Идентификатор сожержит IP, МАС-адрес, имя в сети.
|
NetworkHostName
|
HP2727_3.domain.ru
|
DNS-имя устройства
|
PortID
|
ххх.ххх.ххх.ххх
|
IP-адрес подключенного Jet Direct
|
Для автоматизации процесса линковки рекомендуется использовать REG-файл. Пример такого файла, обеспечивающего линкование драйвера к МФУ c USB-интерфейсом, приведен в листинге 3.
Листинг 3. REG-файл для линковки МФУ с USB-интерфейсом к драйверу
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\0002\DeviceData]
"TulipIOType"=dword:00000005
"NetworkDeviceID"="\\macaddr:00170883C1CA\\port:1"
"NetworkHostName"=""
"PortID"="192.168.1.100"
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\Root\IMAGE\0002\Device Parameters]
"NetworkDeviceID"="\\macaddr:00170883C1CA\\port:1"
"PortID"="192.168.1.100"
"NetworkHostName"=" "
Проверка работоспособности
После завершения установки драйвера и его линкования к устройству необходимо перезагрузить рабочую станцию. Тестом правильности установки драйвера является успешное прохождение теста связи с МФУ (см. рис. 5).
Рисунок 5. Проверка корректности установки драйвера
Заключение
Пользуясь тем, что драйверы ко всем МФУ HP одинаковы, достаточно установить один драйвер, далее требуется менять только название устройства, его тип (Capabilities) и строку доступа к нему (NetworkDeviceID).
- Cайт ScanVue – http://www.scanvue.com.
- Коробко И. Оптимизация сетевой печати. //Системный администратор, №11, 2008 г. – С.
- System-Supplied Device Setup Classes – http://msdn.microsoft.com/en-us/library/ms791134.aspx.