Принтер, подключенный к порту 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.