ПРОГРАММИРОВАНИЕ ПОРТА 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: драйвер GiveIO.sys

Итак, рассмотрим следующий вариант работы с портами ввода/вывода в ОС Windows NT. Этим "вариантом" будет специальный драйвер GiveIO.sys, который позволяет приложению, запустившему его, свободно работать с любыми портами.

Главным достоинством этого драйвера, является то, что обращения к порту могут быть сделаны и с помощью функций, работающих только в Windows 9x!

Этот драйвер написал Dale Roberts черт знает когда, но актуальности от не потерял до сих пор. В кратце расскажу как он работает: в начале работы нашей программы для общения с портами необходимо обратиться к драйверу GiveIO.sys. При этом он установит такие значения битового массива карты разрешения (I/O Permission Map) для нашего приложения, что для него будет разрешен прямой доступ к любым портам. I/O Permission Map это составная часть системы защиты ввода-вывода Windows NT. Он представляет собой битовый массив, каждый бит которого соответствует порту ввода-вывода. Если бит = 1, то доступ к порту закрыт, если 0, то открыт. Для любого пользовательского приложения все биты установлены в 1, и соответственно мы не можем напрямую влезть в порт. GiveIO.sys внаглую влезает в этом массив и везде устанавливает 0 - т.е. можем обращаться к любому порту из приложения.


Пример использования GiveIO.sys

Для начала скачайте архив с драйвером и файлом установки: giveio.rar (2 Kb)

Теперь нам необходимо зарегистрировать и установить драйвер в системе. Для этого необходимо сделать следующие шаги:

1. Скопируйте файл драйвера GIVEIO.sys в папку C:\Windows\system32\drivers\ если, конечно, система у Вас установлена на диск С: и Вы не меняли пути установки Windows.

2. Запустите файл install.reg При этом Вы увидете примерно следующее сообщение:

Нажимайте Да. При этом Вы получите сообщение об успешном внесении информации в реестр. Можно убедиться в этом. В программе редактора реестра regedit.exe в ветви HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\giveio можно увидеть следующее.

3. ПЕРЕЗАГРУЗКА КОМПЬЮТЕРА



Настало время взяться за программирование. В код нашей программы Port.exe (см. статью 1) внесем некоторые изменения, которые позволят ей обращаться к портам не только в Windows 9x как было раньше, но и в Windows NT. Итоговый код примет вид:

#include "iostream.h"
#include "conio.h"
#include "stdlib.h"
#include "windows.h"

int main()
{
	int Address=888;
	cout<<"Test LPT port with GiveIO.sys"<<endl;
	HANDLE h=CreateFile("\\\\.\\giveio", GENERIC_READ, 0, NULL,
                               OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
	if (h==INVALID_HANDLE_VALUE)
	{
		cout<<"Error! Can't open driver! Press any key to exit... "<<endl;
		getch();
		return(0);
	}
	
	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;
						_outp(Address, 0);
						break;	 		
			case '1': 	cout<<"Activate...."<<endl;
						_outp(Address, 1);
						break;
			case 'e': exit(1);
		}
	}

   getch();
}

Все. Компилируем, запускаем. Щелкаем 1-0: все должно работать. Если выскочило сообщение Error! Can't open driver! Press any key to exit... , значит установка драйвера прошла криво, и его надо переустановить.

Благодаря giveio.sys успешно отработают и такие ассемблерные письмена:

	_asm
	{
		mov dx, 378h
		mov al, 1
		out dx, al
	}

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



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


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

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

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



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

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