| ПРОГРАММИРОВАНИЕ ПОРТА 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