Студия web-дизайна Хостмэйк
Наши работыКонтактыО компанииОтзывыГлоссарийСтатьи

Как писать драйвера в C++

Статьи Программирование на С/С++

Предисловие.


Драйвера под Windows являются для большей массы программистов, "тайной за семью печатями". И вовсе не потому, что это что-то архисложное, сколько по причине абсолютной недокументированности идеологии.


Начав заниматься этой темой я понял особенную необходимость не в переводе стандартного Майкрософтовского описания, а именно неких заметок, по созданию и сбору драйверов для различных устройств.


Уточню, что в этих заметках, будут только те данные, которые я проверил лично, с которыми столкнулся в проессе разработки промышленных драйверов, бегающих сегодня в коммерческих пакетах. 

Естественно, все коммерческие секреты я рассказывать не буду.


Некоторые требования к чтению.


Эти заметки не ориентированны на людей - проектирующих драйвера, они уже должны знать все, что здесь будет.


Не стоит читать их человеку, слабо знакомому с языками С и С++, а также плохо понимающему объектную структуру и принципы Win32.


Часть первая: "Что нужно для компиляции простейшего драйвера?"


Для разных типов Windows вам понадобиться разный набор программ.


В любом случае надо скачать Win DDK (Driver Development Kit), для той платформы, под которую пишется драйвер. Его можно брать с разных источников, лично я предпочитаю сайт Майкрософта.

Для линейки 9х вам понадобится и SDK (Software Development Kit), который возьмите тамже.


Так как под продукцию Билла Гейтса стоит поставить и VC++ , я посоветую ставить в таком порядке.


1. Visual C++ 6

2. SDK

3. DDK


Для более поздних платформ достаточно только DDK.

Установив все эти продукты вы получите возможность собирать и инсталлировать драйвера.


Первая тестовая компиляция.


Да, не удивляйтесь, начнем мы именно с этого. По принципу создания, я обычно предпочитаю не писать весь драйвер целиком с нуля. Поверьте, очень нудное и практически невозможное занятие. Мне так и не удалось довести это до конца, уж слишком глубоких знаний самой системы это требует.


Мы пойдем более простым и надежным путем.


После установки DDK, у вас появились в дирректории samples или sources, в зависимости от версии, коды примеров драйверов. Это ваша библия, которую стоит изучить.


Проверка, собственно, правильности прописывания путей (environments), и собствеенно самой DDK и SDK - состоит в пробной компиляции примера.


Компиляция осуществляется посредством стандартных средств.


Программами build, make и link.


Makefile уже написан за вас, и вам надо сделать следующее. Зайдя в Start menu в разделе Programs|DDK|Build environment выберите вариант free и запустите.


Запустится стандартное окно терминала, с установленными переменными среды сборки
DDK.


Перейдите в дирректорию с sources драйвера, который вы выбрали. Компилировать и собирать в корневой дирректории DDK не стоит.


Это приведет к сборке ВСЕХ драйверов примеров и компиляции всех библиотек, а это очень долго.


В корневой дирректории примера (драйвер принтера в нашем случае) запустите build с параметрами
-cZ.


Если вы получили ошибки перепроверьте ваши установки. В нормальном случае вы получите возможность увидеть надпись об удачной сборки sys или vxd файла - в определенной директории. Чаще всего это
Free/i386/


Но бывает и другая. Это говорит о том что ваш драйвер собран правильно и установка прошла успешно


Источник: http://shelek.com

16.02.2006

Телефон

+7 8636 237-836

Поиск

VSESMI.ru — новости в СМИ.
Один из больших по объему информации проектов, работающих под управлением HostCMS.

Tur-Hotel.ru — отзывы об отелях
На сайте представлено описание отелей, рейтинг отелей с отзывами туристов.