ПРОГРАММИРОВАНИЕ ПОРТА LPT LPT-PORT.NAROD.RU |
|
Работа с LPT под Win 2000, XP: самодельный драйвер Port.sysПродолжая цикл статей по тематике борьбы с Windows при управлении портами не могу не рассказать о еще одном крайне интересном инструменте: драйвер - обычный драйвер под NT, который можно написать и самому. Однажды я решил, что не плохо бы написать собственный драйвер для управления портами. Я знал что это будет непросто и не ошибся: ломал голову несколько месяцев, прежде чем скомпилировал и оттестировал рабочий вариант драйвера для портов. Несмотря на трудности написания драйвера, он дает максимальные возможности по работе с аппаратным железом компьютера. В качестве примера в этой статье, я предлагаю простенький драйвер позволяющий читать и писать в порт. Его функциональные возможности ни чем не отличаются от библиотеки inpout32.dll и в конечном счете от GiveIO.sys, но при желании, возможности этого драйвера можно значительно расширить, введя обработчик прерывания и многое др. Пример использования Port.sys Для начала скачайте архив с драйвером и библиотекой: port.rar (9 Kb) Этот драйвер предварительно прописавать в реестре не надо - он используется как динамически загружаемый, т.е. достаточно разместить его в одной директории с самой программой. Итак, создаем пустой проект консольного приложения в VS++, создаем пустой файл *.cpp и копируем туда ниже следующий код: #include "iostream.h" #include "conio.h" #include "stdlib.h" #include "windows.h" #include "h.h" extern HANDLE hDrv; int main() { int Address=888; cout<"-----------Test LPT port with Port.sys-------------"<endl; cout<" "<endl; bool status=InstallDriverWithSCManager(); if (status==false) { cout<"Error! Can't open driver! Press any key to exit... "<endl; getch(); return false; } cout<"Press '1' to activate and '0' to disactivate lightdiod."<endl; cout<"To exit press 'e'."<endl; cout<" "<endl; while(1) { switch(getch()) { case '0': cout<"Disactivate...."<endl; WriteToPort(Address, 0); break; case '1': cout<"Activate...."<endl; WriteToPort(Address, 1); break; case 'e': cout<" Press any key to exit..."<endl; getch(); StopDriver(); return true; break; } } } Теперь копируем в папку пректа файлы PortLib.lib и h.h. Подсоединяем их к проекту выбором пункта меню Project -> Add to Project -> Files.... Далее копируем файл драйвера Port.sys в папку, где находится откомпилированная программа (папка Debug или Relase, смотря в каком режиме компилируете).
Наконец, проводим компиляцию нашего проекта и запускаем программу. Если все в порядке, нажатием клавиш 1 и 0 мигаем светодиодом. Напомню, если не получается, пишите lpt-port@narod.ru, помогу. Был бы благодарен Вам, если бы Вы смогли найти пару минут и написать, понравился ли материал или нет. |
По всем вопросам просьба обращаться: lpt-port@narod.ru
© 2005 "CONTROLLER SYSTEM". Все права защищены. |
программирование порта lpt, программирование драйверов, создание простого драйвера, пример драйвера, как написать драйвер, драйвера NT, драйвер GiveIO.sys