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


Принтер, подключенный к порту LPT

Перечислитель LPT является примером водителя автобуса. Перечислитель LPT способен получать идентификационные сведения от оборудования порта LPT, соответствующего протоколу порта IEEE 1284 Extended Capabilities Port Protocol и ISA Interface Standard.

При запуске системы Windows 2000 или более поздней версии диспетчер конфигурации вызывает перечислитель LPT для перечисления устройств, совместимых с IEEE 1284, подключенных к портам LPT. Для каждого найденного устройства диспетчер конфигурации вызывает установщик класса принтеров. Установщик класса принтеров вызывает setupDi-prefix device installation functions, которые получают сведения из INF-файлов принтера.

Для принтера с параллельным подключением параллельный перечислитель создает devnode с уникальным идентификатором оборудования , созданным из строки 1284, полученной от принтера.

Пример строки 1284:

"MANUFACTURER:Hewlett-Packard;COMMAND SET:PJL,MLC,PCL,POSTSCRIPT;MODEL:HP Color LaserJet 550;CLASS:PRINTER;COMMENT:HP LaserJet;"

Из этой строки 1284 параллельный перечислитель создает следующий идентификатор оборудования:

LPTENUM\Hewlett-PackardHP_Co3115

Идентификатор оборудования состоит из префикса перечислителя, за которым следует имя производителя, имя модели и код циклической избыточности проверка (CRC). Код CRC, представляющий собой последние четыре цифры идентификатора оборудования, создается из строк производителя и модели. Пробелы в строке заменяются символами подчеркивания.

Чтобы прочитать строку идентификатора 1284 с устройства, отправьте IOCTL_PAR_QUERY_DEVICE_ID. Обратите внимание, что очередь очереди очереди перенаправляет символьную ссылку LPTx (где x — номер LPT 1, 2 или 3) в именованный канал очереди очереди. Это означает, что если очередь очереди выполняется, parport никогда не видит списки IOCTL, отправленные в LPTx.

Devnode для принтера с параллельным подключением Plug and Play помещается в раздел HKLM\SYSTEM\CurrentControlSet\Enum\LPTENUM и имеет один идентификатор оборудования в формате :

LPTENUM\Company_NameModelNam1234

Стек драйверов отображается на рисунке после следующего примера кода.

В следующем примере показан INF-код, который будет правильно "подключить и воспроизвести" идентификатор оборудования в формате LPTENUM\Company_NameModelNam1234 . Обратите внимание, что в разделе Изготовитель INF дважды отображается описание устройства "Имя модели XYZ". Идентификатор оборудования в первой строке содержит перечислитель шины, а идентификатор оборудования во второй строке — нет. Эти две строки гарантируют соответствие идентификатора оборудования ранг-0 независимо от типа шины, на которой установлен принтер. Дополнительные сведения см. в статье Установка пользовательского драйвера принтера Plug and Play.

[Manufacturer]
%Company_Name%=Company_Name

; Section name for all drivers for Company_Name
[Company_Name]
"Model Name XYZ" = Install_Section_XYZ, LPTENUM\Company_NameModelNam1234 ; plus any compatible IDs
"Model Name XYZ" = Install_Section_XYZ, Company_NameModelNam1234 ; plus any compatible IDs

; The install section for the XYZ model
[Install_Section_XYZ]

[Strings]
Company_Name="Company Name"

Подключитесь к принтерам с параллельными портами.

Для принтера, который совместно использует свой идентификатор устройства с другими моделями, INF-файл должен выглядеть следующим образом:

[Manufacturer]
%Company_Name%=Company_Name

; The section for all drivers for Company_Name
[Company_Name]
"Model Name XYA" = Install_Section_XYA, LPTENUM\Company_NameModelNam1234, Company_NameModelNam1234 ; plus any other compatible IDs
"Model Name XYA" = Install_Section_XYA, Company_NameModelNam1234, Company_NameModelNam1234 ; plus any other compatible IDs
"Model Name XYB" = Install_Section_XYB, LPTENUM\Company_NameModelNam1234, Company_NameModelNam1234; plus any other compatible IDs
"Model Name XYB" = Install_Section_XYB, Company_NameModelNam1234, Company_NameModelNam1234 ; plus any other compatible IDs

; The install sections
[Install_Section_XYA]

[Install_Section_XYB]

[ControlFlags]
InteractiveInstall = LPTENUM\Company_NameModelNam1234, Company_NameModelNam1234

[Strings]
Company_Name = "Company Name"

Как и в предыдущем примере, каждая модель в разделе INF Manufacturer представлена парой почти идентичных линий. Для данной модели одна строка в паре включает перечислитель шины; другой — нет. Эти две строки гарантируют соответствие идентификатора оборудования ранг-0 независимо от типа шины, на которой установлен принтер. Дополнительные сведения см. в статье Установка пользовательского драйвера принтера Plug and Play.