Parallel port driver что это
Лет 10-15 назад параллельный порт был довольно востребованным интерфейсом для связи между устройствами. Сегодня производители различных устройств отдают предпочтение последовательным интерфейсам. Тем не менее, и сегодня LPT порт всё ещё можно встретить. А некоторые разработчики ещё пишут под него программы (или поддерживают написанные во времена расцвета параллельных интерфейсов). Но в компьютерах сейчас LPT порт – достаточно большая редкость. Существуют, конечно, платы расширения для компьютера, которые реализуют интерфейс LPT. Они в основном представляют собой платы на шине PCI. К сожалению, далеко не весь софт, который был написан для интегрированных в материнскую плату LPT портов, будет работать с LPT-PCI-платами.
1 Установка драйвера для работы с LPT портом
В приложенном архиве находятся две папки – для 32-разрядной и для 64-разрядной версий Windows. В одной из папок лежит файл InstallDriver.exe. Сначала запустите этот файл, он установит динамические библиотеки в систему. После этого компьютер следует перезагрузить.
Чтобы использовать предлагаемый драйвер, файлы inpout32.dll и inpoutx64.dll должны располагаться в одной директории с исполняемым файлом вашей программы.
2 Программный класс использования библиотек работы с LPT портом
Упомянутые библиотеки написаны не мной. Я предлагаю удобный класс-оболочку, упрощающий работу с данными библиотеками. Кроме того, автор библиотек в файле readme.txt сообщает, что его драйвер не поддерживает PCI устройства. Мне удалось его запустить для работы как с интегрированным параллельным портом, так и LPT портом, реализованном в виде платы расширения на шине PCI-Express. Причём порт отлично работает и на современной Windows10 x64, и на более старых системах.
Если мы посмотрим на список экспортируемых функций библиотеки inpout32.dll с помощью замечательного инструмента DLL Export Viewer от NirSoft, то увидим следующую картину:
Список экспортируемых функций библиотеки inpout32.dll
Это список функций, которые мы можем использовать. Фактически все они используются в классе LPT, но реализация скрыта, и из публичных методов пользователю доступны только два метода и одно свойство (они рассматриваются чуть далее).
При инстанцировании класс сам определит, библиотеку какой разрядности ему использовать – inpout32.dll или inpoutx64.dll. Поэтому от пользователя не требуется никаких действий по инициализации или определения разрядности используемой dll. Вы можете сразу записывать или читать из LPT порта. Одно «Но»: если драйвер не установлен, обращение к любому из методов динамической библиотеки вызовет исключение, поэтому рекомендую использовать блоки Try…Catch для перехвата и обработки исключений.
Несколько примеров использования класса LPT.
Для определения, используется ли 64-разрядная версия драйвера (inpoutx64.dll при True) или 32-разрядная (inpout32.dll при False) (на самом деле, это знать не обязательно, класс использует именно ту библиотеку, которая нужна, но вдруг вам для чего-то понадобится это узнать из своей программы):
Для записи числа "123" в регистр контроля LPT порта вызовите из своего класса:
Для чтения одного байта из регистра данных LPT порта и чтения регистра статуса:
Здесь currentPort – адрес LPT порта. Причём, если у вас интегрированный LPT порт, то его адрес будет, скорее всего, 378h. А если у вас LPT порт на плате расширения, то адрес будет другой, например, D100h или C100h.
Чтобы узнать адрес LPT порта, зайдите в диспетчер устройств Windows, найдите раздел Порты COM и LPT, выберите используемый параллельный порт, и в окне свойств (щёлкнув по нему правой кнопкой мыши) посмотрите, какие ресурсы использует выбранный порт (необходимо брать первое значение из диапазона).
Ресурсы, используемые LPT портом, в диспетчере устройств Windows
Например, в данном случае необходимо использовать номер порта C100.
Похожие материалы (по тегу)
Другие материалы в этой категории:
8 комментарии
Мне кажется, что для решения вашей задачи со сканером это решение не подходит, и запустить старый сканер не получится. Потому что придётся самому переписывать софт для сканирования. Ваша задача должна решаться как-то на уровне драйвера порта или той программы, которая используется для сканирования. Может быть, есть обновлённые драйверы для сканера с возможностью указывать адрес порта. А может проще найти старый комп, где на материнке присутствует LPT. Кстати, Asus до сих пор выпускает материнские платы с LPT под более-менее современные процессоры, например, модель H81M-C.
Спасибо тебе, добрый человек. Установка этого драйвера и замена inpout32.dll в директории исполняемой программы, помогли запустить софт, который ранее работал только на Win XP из под Win 10x64
Василий, рад, что помог!
В этом разделе описаны возможности системных драйверов параллельных портов и устройств, подключенных к параллельным портам.
за исключением 64-разрядных версий Microsoft Windows, Windows 2000 и более поздней версии предоставляет драйвер функции параллельных портов и драйвер параллельной порта для Plug and Play устройств, подключенных к параллельному порту. Корпорация Майкрософт не предоставляет параллельные драйверы для 64-разрядных версий Windows.
Windows 2000 включает следующие драйверы:
Паркласс — это драйвер параллельной портовой шины для устройств, подключенных к параллельным портам. Исполняемый образ Паркласс — parallel.sys.
Парпорт — это драйвер функции параллельного порта. Исполняемый образ Парпорт — parport.sys.
в Windows XP и более поздних версиях паркласс удаляется, а парпорт предоставляет функции драйвера параллельных портов и драйвера параллельной шины. исполняемый образ парпорт в Windows XP parport.sys.
Драйвер функции, предоставляемый системой для параллельных портов, создает функциональный объект устройства (ФДО), представляющий каждый параллельный порт, перечисленный в системе. Драйвер шины, предоставляемый системой для параллельных портов, создает объект физического устройства (PDO), который представляет каждое параллельное устройство, перечисленное драйвером шины на порт. Клиенты, например предоставляемые поставщиком параллельные драйверы, работают с параллельным устройством через интерфейсы, предоставляемые PDO параллельного устройства и ФДО родительского порта устройства.
за исключением небольших эксплуатационных различий, описанных в параллельной документации, клиентские интерфейсы для драйверов, предоставляемых системой , одинаковы в Windows 2000, как в Windows XP и более поздних версиях.
Поддерживаемые системой параллельные драйверы:
Устаревшие параллельные порты, стандартные устройства параллельного порта, устройства, совместимые с IEEE 1284, устройства, совместимые с IEEE 1284, и устройства, поддерживающие стандарт IEEE 1284,3
Большинство режимов взаимодействия, в том числе режим Центроникс, режим IEEE 1284, режим порта расширенных возможностей (ECP) и расширенный режим параллельного порта (EPP).
Plug and Play, управление питанием и инструментарий управления Windows (WMI) (WMI)
Общий доступ ко всем параллельным портам, установленным в системе
Необработанный доступ ко всем параллельным устройствам
Запросы IOCTL и обратные вызовы для обработки параллельных портов и устройств. см. раздел Поддержка IOCTL и обратного вызова для параллельных портов и устройств .
Предоставляемые системой параллельные драйверы обеспечивают следующую частичную поддержку устройств IEEE 1284,3:
Сочетание запросов управления устройствами и подпрограмм обратного вызова, функционально эквивалентных интерфейсу поставщика услуг. См. раздел интерфейс поставщика услуг (SPI) в спецификации IEEE p 1284.3.
Выбор и операция более чем одного устройства подключения IEEE 1284,3 и устройства конца цепочки, как определено в предложении последовательного сцепления спецификации IEEE p 1284.3.
Основные службы для поддержки уровня связи данных, как указано в предложении Data Link Layer спецификации IEEE p 1284.3, см. в разделе Подключение к устройству канала передачи данных IEEE 1284,3.
Предоставляемые системой параллельные драйверы не поддерживают следующие спецификации IEEE 1284,3:
Мультиплексоры, как указано в предложении мультиплексора спецификации IEEE p 1284.3.
Поддержка этой функции в будущих выпусках Windows не планируется.
Прерывания для устройств с последовательной цепочкой IEEE 1284,3.
Системные драйверы, предоставляемые системой, создают:
Объекты устройств, интерфейсы и незащищенные символьные ссылки, как описано в разделе стеки устройств для параллельных портов и устройств.
Рабочая очередь для каждого параллельного порта.
Драйвер функции, предоставляемый системой для параллельных портов, помещает в очередь запросы ввода-вывода для выделения параллельного порта и выбора устройства IEEE 1284,3, подключенного к параллельному порту.
Рабочий поток и Рабочая очередь для каждого параллельного устройства.
Предоставляемый системой драйвер шины для параллельных портов ставит в очередь следующие запросы ввода-вывода, если они не могут сразу выполнить их: чтение, запись, управление устройством и внутреннее управление устройством.
Дополнительные сведения о работе с параллельными портами и устройствами, подключенными к параллельным портам, см. в следующих статьях:
Дополнительные сведения о стандартах параллельных портов и устройств см. в следующих спецификациях:
Стандарт IEEE Std 1284-1994, стандартный метод сигнализации IEEE для двунаправленного параллельного интерфейса для персональных компьютеров
IEEE P 1284.3, Standard для расширений интерфейса и протокола для совместимых с IEEE 1284-1994 устройств и адаптеров узлов, черновик D 6.00, 3 декабря 1998
This section describes the features of the system-supplied parallel drivers for parallel ports and devices that are attached to parallel ports.
Except for 64-bit versions of Microsoft Windows, Windows 2000 and later provides a parallel port function driver and a parallel port bus driver for Plug and Play devices that are attached to a parallel port. Microsoft does not provide parallel drivers for 64-bit versions of Windows.
Windows 2000 includes the following drivers:
Parclass is the parallel port bus driver for devices that are attached to parallel ports. The executable image of Parclass is parallel.sys.
Parport is the parallel port function driver. The executable image of Parport is parport.sys.
The operation of Parclass and Parport is closely connected through Internal Device Control Requests for Parallel Ports and parallel port callback routines.
In Windows XP and later, Parclass is removed, and Parport provides the function of both the parallel port function driver and the parallel port bus driver. The executable image of Parport in Windows XP is parport.sys.
The system-supplied function driver for parallel ports creates a functional device object (FDO) that represents each parallel port enumerated in the system. The system-supplied bus driver for parallel ports creates a physical device object (PDO) that represents each parallel device that the bus driver enumerates on a port. Clients, for example vendor-supplied parallel drivers, operate a parallel device through the interfaces provided by a parallel device's PDO and the FDO of the device's parent port.
Except for minor operational differences described throughout the parallel documentation, the client interfaces to system-supplied parallel drivers is the same in Windows 2000 as in Windows XP and later.
The system-supplied parallel drivers support:
Legacy parallel ports, standard parallel port devices, IEEE 1284-compatible devices, IEEE 1284-compliant devices, and IEEE 1284.3 daisy chain devices
Most communication modes, including Centronics mode, IEEE 1284 modes, extended capabilities port (ECP) mode, and enhanced parallel port (EPP) mode
Plug and Play, power management, and Windows Management Instrumentation (WMI)
Shared access to all the parallel ports installed on the system
Raw access to all parallel devices
IOCTLs and callbacks to operate parallel ports and devices -- see IOCTL and Callback Support for Parallel Ports and Devices
The system-supplied parallel drivers provide the following partial support for IEEE 1284.3 devices:
A combination of device control requests and callback routines that is functionally equivalent to the Service Provider Interface. See Service Provider Interface (SPI) in the IEEE P1284.3 specification.
The selection and operation of more than one IEEE 1284.3 daisy chain device and an end-of-chain device, as defined in the Daisy Chaining clause of the IEEE P1284.3 specification.
Basic services to support the data link layer, as specified in the Data link layer clause of the IEEE P1284.3 specification -- see Connecting to an IEEE 1284.3 Data Link Device.
The system-supplied parallel drivers do not support the following IEEE 1284.3 specifications:
Multiplexors, as specified in the Multiplexor clause of the IEEE P1284.3 specification.
There are no plans to support this feature in future releases of Windows.
Interrupts for IEEE 1284.3 daisy chain devices.
The system-supplied parallel drivers create:
Device objects, interfaces, and unprotected symbolic links, as described in Device Stacks for Parallel Ports and Devices.
A work queue for each parallel port.
The system-supplied function driver for parallel ports queues I/O requests to allocate a parallel port and to select an IEEE 1284.3 device attached to a parallel port.
A worker thread and work queue for each parallel device.
The system-supplied bus driver for parallel ports queues the following I/O requests if it cannot immediately complete them: read, write, device control, and internal device control.
For more information about how to operate parallel ports and devices attached to parallel ports, see:
For information about parallel port and device standards, see the following specifications:
IEEE Std 1284-1994, IEEE Standard Signaling Method for a Bidirectional Parallel Peripheral Interface for Personal Computers
IEEE P1284.3, Standard for Interface and Protocol Extensions to IEEE 1284-1994 Compliant Peripherals and Host Adapters, Draft D6.00, December 3, 1998
диспетчер Plug and Play использует Plug and Play поддержку драйвера функции, предоставляемого системой, для параллельных портов, чтобы создать и запустить объект устройства-функции (фдо), представляющий параллельный порт.
Драйвер функции параллельного порта выполняет следующие действия:
Создает именованный ФДО
Формат имени устройства для параллельного порта — "\Девице\параллелпорткс", где x — это целочисленное значение для номера порта. драйвер функции параллельного порта использует значение записи портнаме (REG_SZ) в разделе реестра Plug and Play для параллельного порта, чтобы определить номер порта. Обратите внимание, что если Портнаме имеет формат "Лптн", где n — номер порта, то для x в "Параллепорткс" задается значение (n-1). Например, "ParallelPort0" связан с "LPT1". Если Портнаме имеет неправильный формат, объект устройства не создается.
Обратите внимание, что имя устройства "Параллелпорткс" не гарантируется. Корпорация Майкрософт рекомендует использовать иорегистерплугплайнотификатион , чтобы получать уведомления о получении интерфейса устройства GUID_PARALLEL_DEVICE.
Регистрирует и включает интерфейс GUID_PARALLEL_DEVICE для параллельного порта.
проверка ресурсов, отправленных диспетчером Plug and Play
Инициализирует устройства 1284,3, подключенные к параллельному порту.
Драйвер функции параллельного порта подсчитывает число последовательностей устройств и назначает идентификатор последовательной цепочки каждому устройству. в Microsoft Windows 2000 драйвер назначает идентификаторы от 0 до 3. в Windows XP драйвер назначает идентификатор 0 или 1. Идентификаторы устройств назначаются устройствам в возрастающем порядке, начиная с устройства, которое физически близко к параллельному порту.
Регистрирует ФДО и связанные блоки данных WMI и обратные вызовы с помощью поставщика WDM.
Драйвер функции параллельного порта записывает количество выделенных и освобожденных параллельных портов.
Определяет режимы взаимодействия, поддерживаемые оборудованием параллельных портов
Оборудование должно быть совместимо по крайней мере с IEEE 1284. Драйвер функции параллельного порта проверяет, поддерживает ли оборудование режимы BYTE, EPP и ECP. Обратите внимание, что EPP поддерживается только на небольшом подмножестве компьютеров.
Создает рабочую очередь (FIFO) для параллельного порта.
Каждый параллельный порт имеет собственную рабочую очередь. Драйвер функции параллельного порта выделит и выберет только запросы устройств. Если порт уже выделен, когда драйвер функции параллельного порта получает новый запрос на выделение или запрос SELECT, он помещает запрос в очередь.
Лет 10-15 назад параллельный порт был довольно востребованным интерфейсом для связи между устройствами. Сегодня производители различных устройств отдают предпочтение последовательным интерфейсам. Тем не менее, и сегодня LPT порт всё ещё можно встретить. А некоторые разработчики ещё пишут под него программы (или поддерживают написанные во времена расцвета параллельных интерфейсов). Но в компьютерах сейчас LPT порт – достаточно большая редкость. Существуют, конечно, платы расширения для компьютера, которые реализуют интерфейс LPT. Они в основном представляют собой платы на шине PCI. К сожалению, далеко не весь софт, который был написан для интегрированных в материнскую плату LPT портов, будет работать с LPT-PCI-платами.
1 Установка драйвера для работы с LPT портом
В приложенном архиве находятся две папки – для 32-разрядной и для 64-разрядной версий Windows. В одной из папок лежит файл InstallDriver.exe. Сначала запустите этот файл, он установит динамические библиотеки в систему. После этого компьютер следует перезагрузить.
Чтобы использовать предлагаемый драйвер, файлы inpout32.dll и inpoutx64.dll должны располагаться в одной директории с исполняемым файлом вашей программы.
2 Программный класс использования библиотек работы с LPT портом
Упомянутые библиотеки написаны не мной. Я предлагаю удобный класс-оболочку, упрощающий работу с данными библиотеками. Кроме того, автор библиотек в файле readme.txt сообщает, что его драйвер не поддерживает PCI устройства. Мне удалось его запустить для работы как с интегрированным параллельным портом, так и LPT портом, реализованном в виде платы расширения на шине PCI-Express. Причём порт отлично работает и на современной Windows10 x64, и на более старых системах.
Если мы посмотрим на список экспортируемых функций библиотеки inpout32.dll с помощью замечательного инструмента DLL Export Viewer от NirSoft, то увидим следующую картину:
Список экспортируемых функций библиотеки inpout32.dll
Это список функций, которые мы можем использовать. Фактически все они используются в классе LPT, но реализация скрыта, и из публичных методов пользователю доступны только два метода и одно свойство (они рассматриваются чуть далее).
При инстанцировании класс сам определит, библиотеку какой разрядности ему использовать – inpout32.dll или inpoutx64.dll. Поэтому от пользователя не требуется никаких действий по инициализации или определения разрядности используемой dll. Вы можете сразу записывать или читать из LPT порта. Одно «Но»: если драйвер не установлен, обращение к любому из методов динамической библиотеки вызовет исключение, поэтому рекомендую использовать блоки Try…Catch для перехвата и обработки исключений.
Несколько примеров использования класса LPT.
Для определения, используется ли 64-разрядная версия драйвера (inpoutx64.dll при True) или 32-разрядная (inpout32.dll при False) (на самом деле, это знать не обязательно, класс использует именно ту библиотеку, которая нужна, но вдруг вам для чего-то понадобится это узнать из своей программы):
Для записи числа "123" в регистр контроля LPT порта вызовите из своего класса:
Для чтения одного байта из регистра данных LPT порта и чтения регистра статуса:
Здесь currentPort – адрес LPT порта. Причём, если у вас интегрированный LPT порт, то его адрес будет, скорее всего, 378h. А если у вас LPT порт на плате расширения, то адрес будет другой, например, D100h или C100h.
Чтобы узнать адрес LPT порта, зайдите в диспетчер устройств Windows, найдите раздел Порты COM и LPT, выберите используемый параллельный порт, и в окне свойств (щёлкнув по нему правой кнопкой мыши) посмотрите, какие ресурсы использует выбранный порт (необходимо брать первое значение из диапазона).
Ресурсы, используемые LPT портом, в диспетчере устройств Windows
Например, в данном случае необходимо использовать номер порта C100.
Похожие материалы (по тегу)
Другие материалы в этой категории:
8 комментарии
Мне кажется, что для решения вашей задачи со сканером это решение не подходит, и запустить старый сканер не получится. Потому что придётся самому переписывать софт для сканирования. Ваша задача должна решаться как-то на уровне драйвера порта или той программы, которая используется для сканирования. Может быть, есть обновлённые драйверы для сканера с возможностью указывать адрес порта. А может проще найти старый комп, где на материнке присутствует LPT. Кстати, Asus до сих пор выпускает материнские платы с LPT под более-менее современные процессоры, например, модель H81M-C.
Спасибо тебе, добрый человек. Установка этого драйвера и замена inpout32.dll в директории исполняемой программы, помогли запустить софт, который ранее работал только на Win XP из под Win 10x64
Василий, рад, что помог!
Читайте также: