ПРОГРАММИРОВАНИЕ ПОРТА LPT LPT-PORT.NAROD.RU
программирование порта lpt, программирование драйверов, создание простого драйвера, пример драйвера, как написать драйвер, драйвера NT, драйвер GiveIO.sys

программирование порта lpt, программирование драйверов, создание простого драйвера, пример драйвера, как написать драйвер, драйвера NT, драйвер GiveIO.sys

программирование порта lpt, программирование драйверов, создание простого драйвера, пример драйвера, как написать драйвер, драйвера NT, драйвер GiveIO.sys

программирование порта lpt, программирование драйверов, создание простого драйвера, пример драйвера, как написать драйвер, драйвера NT, драйвер GiveIO.sys

Работа с 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, смотря в каком режиме компилируете).

программирование порта lpt, программирование драйверов, создание простого драйвера, пример драйвера, как написать драйвер, драйвера NT, драйвер GiveIO.sys

Т.е. файл программы и драйвер должны быть вместе, иначе один без другого ни чего не сможет сделать.

Наконец, проводим компиляцию нашего проекта и запускаем программу. Если все в порядке, нажатием клавиш 1 и 0 мигаем светодиодом.


Напомню, если не получается, пишите lpt-port@narod.ru, помогу.




Был бы благодарен Вам, если бы Вы смогли найти пару минут и написать, понравился ли материал или нет.


По всем вопросам просьба обращаться: lpt-port@narod.ru

© 2005 "CONTROLLER SYSTEM". Все права защищены.

программирование порта lpt, программирование драйверов, создание простого драйвера, пример драйвера, как написать драйвер, драйвера NT, драйвер GiveIO.sys



Hosted by uCoz
 
Внимание!

Сайт переехал на новое место:
www.pcports.ru
Все обновления теперь будут размещаться там