Главная

Thursday, 4 July 2024

Сканирование по сети с МФУ.

Всем привет.

Несмотря на некоторую давность статьи анализ информации для меня в ней на 90% актуален и по сей день. Оригинал автора публиковался здесь - Коробко И. Сетевое сканирование с помощью МФУ от HP. //журнал "Системный администратор", №12, 2008 год, с.44-48.

Процедура инсталляции драйверов и необходимого программного обеспечения сетевых МФУ – достаточно длительный процесс, в результате которого на компьютер клиента устанавливаются лишние программное обеспечение и устройства.

Тогда давайте вычленим из дистрибутива необходимые компоненты.

Все знают о надежности черно-белых принтеров и сканеров, созданных инженерами компании HP. Несколько лет назад под этой маркой появились многофункциональные устройства: принтер, сканер, копировальный аппарат, а иногда и факс теперь объединены в одном устройстве.

МФУ со временем эволюционировали: сначала была реализована поддержка только USB-интерфейса. Сетевое подключение этих устройств можно было обеспечить с помощью Jet Direct. Принтер при таком подключении функционировал прекрасно, сканер давал частые сбои. Позже этот недостаток был устранен. В настоящее время МФУ поддерживает LAN и USB-интерфейсы.

Несмотря на это, основной недостаток – неудобное программное обеспечение – не был устранен. Привожу список недостатков входящего в комплект программного обеспечения:

  • длительное время установки (30-40 минут);
  • при установке сетевого МФУ создается локальный принтер на клиенте;
  • нестабильная работа программы сканирования при подключении МФУ как сетевого устройства;
  • установка графического интерфейса для драйвера принтера, что неблагоприятно сказывается на скорости работы МФУ.

Несмотря на прекрасно реализованную аппаратную часть, программная часть сильно недоработана. В связи с этим предлагается вычленить из прилагаемого к МФУ компакт-диска драйверы принтера и сканера. Поскольку в настоящее время в продаже только МФУ с поддержкой сети (например, HP 3390 или HP 2727), то вычленять программу сканирования не нужно, поскольку мастер работы со сканером и камерой входит в состав операционной системы Windows. Для предыдущих моделей МФУ c USB-интерфейсом необходимо использовать Jet Direct для преобразования USB и LAN. Для управления такого рода системой необходимо специфическое программное обеспечение. В противном случае невозможно будет отсканировать изображения с помощью таких программ, как Photoshop или ACDSee. Если принято решение отказаться от использования программы сканирования HP, то рекомендуется использовать аналогичную программу ScanVue, в которой реализована связка 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-файла. 

Для идентификации устройств в INF-файле в разделе [version] отвечают два параметра: Class и ClassGuid. Каждому классу соответствует определенный GUID. Ошибка в названии класса устройства или идентификатора будет фатальной. В таблице 1 приведен список широко используемых устройств и соответствующие им значения параметров Class и ClassGuid.

На каждом диске имеется только один 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-драйвер.  Для реализации этого решения необходимо найти 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. Значение данного параметра произвольно. При его отсутствии во время установки возникает ошибка "Не удалось изменить выбор принтера".

DriverVer (необязательный параметр). Версия драйвера, например 10/03/2006, 1.0.0.0.

CatalogFile (необязательный параметр). Ссылка на файл с расширением CAT, содержащий цифровую подпись. Например, hppasc07.cat.

Provider = "any"


Таблица 1. Классы часто используемых типов устройств

После анализа раздела [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).

Несмотря на многообразие операционных систем, перечисленных в файле, список библиотек одинаков для всех ОС. Поэтому рекомендуется использовать вариант, в котором все описатели устройства для разных операционных систем ссылаются на один раздел – WIA_2727nf_NW.

Листинг 2а. Определение списка устанавливаемых устройств

[Manufacturer]

"Hewlett-Packard"=HP,NTx86.5.1,NT.6.0

[HP]

; Windows XP

Листинг 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. Параметры сетевого сканирования

После завершения процесса установки драйвера необходимо к нему прилинковать само устройство. В таблице 3 приведены параметры и шаблон их значений в зависимости от модели. Обратите внимание, что для МФУ, поддерживающего сетевой интерфейс, формат значений отличается от USB. Значения перечисленных в таблице 3 строковых параметров должны быть указаны в двух ветвях реестра (где хххх – порядковый номер устройства, присваиваемый автоматически при создании камеры или сканера в соответствующей папке панели управления):

HKLM\SYSTEM\CurrentControlSet\Control\Class\{6BDD1FC6-810F-11D0-BEC7-08002BE2092F}\хххх\DeviceData;

HKLM\SYSTEM\CurrentControlSet\Enum\Root\IMAGE\хххх\Device Parameters.


Таблица 3. Параметры линкования МФУ к драйверу

Для автоматизации процесса линковки рекомендуется использовать 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).

P.S.:

до речі, відомо шо з frontend панелі БФП (Xerox, Samsung, Canon, HP) можно зробити багато чого. Саме нагальніше для Адміністратора це перевірка прямих функцій БФП, тобто друку та сканування. Не зі слів користувача, а саме Адміністратором.

Так от що цікаво - в web frontend панелі БФП є функція віддаленого друку. Для цього потрібен любий файл відповідного формату який можно зарядити на друк через меню "Document ready for print". У вашого принтера ця опція може називатися по іншому. Іноді така функція знаходиться на окремій web-сторінці frontend-a.

А от щодо сканування з frontend, то я поки окремої функції не знайшов. Але при насиченності сучасного БФП мережевими сервісами це можливо за допомогою додаткового коду, но то вже буде як хак. А мені цікаво то зробити штатно. Може ви знаєте як?


No comments:

Post a Comment

А что вы думаете по этому поводу?