Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Професиональное программирование


Информационный Канал Subscribe.Ru

Всем привет.

Есть несколько новостей.

Первое объявление о причниах некоторой недоступности сайта вчера.
В связи с аварией базы данных DNS на регистраторе домейна shelek.com, произошел сбой. Старые до переезда DNS сервера были прописаны в базу, а новые остались на бумаге. Замечено это было уже тогда , когда весь мир видел вместо shelek.com обычную страничку "Сервер не найден". В результате получасового пререкания на аглицком наречии с суппортом регистратора была выяснена эта самая причина, и DNS были перепрописаны заново.

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

Еще одна досадная ошибка выявилась вчера, в ссылках на стандарты в прошлой рассылке вкралась ошибка и стандарт C++ был обозван стандартом С. Понимая ваше возмущение - прошу переделать закладки вчерашней ошибки и вот на этой страничке забрать стандарт ANSI С.

Еще одна ссылочка добавлена любителям Линуксовского ядра. На сайте в разделе Ссылки - новая ссылка на интересный, но англоязыячный ресурс.

Лирическое отступление.

Сколько людей - столько и мнений. Написав серию статей по драйверам, не думал что вернусь к этой теме в начало. Однако, статья которую написал Артем, спутала мне все планы. Тематика драйвер с нуля - казалось исчерпана, однако, прочитав ее понял, каждый человек идет в объяснениях и в исследовании неизвестного своим собственным путем.

Видимо это здорово.

Драйвер с нуля

Автор: Артем

В один прекрасный день меня попросили написать Драйвер.
На тот день мои познания в C/C++ ограничивались программой «Hellow Word», и, поэтому, на вопрос: «Напишешь?» я самоуверенно ответил: «Конечно».
На следующий день я узнал, что на свете существуют MSDN и DDK. Вскоре я понял, что не все Windows одинаковые, оказалось, что мой драйвер должен работать «под Win2000/NT». У меня ушло больше месяца на то, чтобы скомпилировать и запустить свой первый Драйвер. По правде сказать, это был не совсем мой Драйвер, а точнее--это был genport из NTDDK. Но радовался я так, как будто минимум написал свою ОС.
Недавно мне пришлось опять вернуться к Драйверу. И вот вчера я, наконец-то, сдал работающий драйвер и решил написать эту небольшую статью, для того чтобы как-то систематизировать то, что я узнал и, чтобы когда мне снова придется взяться за драйвер, было от чего отталкиваться.

Люди знающие что такое IOCTL, DEVICE_EXTENSION, MajorFunction и DriverEntry не найдут здесь ничего нового.
Эта статья для тех, кто возможно никогда не слышал слово ДДК, и кто до сего дня никогда не заглядывал в исходники драйверов.
И еще, я буду довольно-таки подробно описывать многие, даже очевидные вещи, поэтому напомню о том, что данная статья рассчитана на людей с очень малым опытом программирования, какой был у меня, когда я занялся написанием драйверов.

Ссылки:
Первое с чем сталкивается программист, решивший заняться драйверами это почти полное отсутствие русскоязычной литературы по данной теме. За год поисков мне удалось найти всего три книги на русском, в которых хотя бы немного говориться о драйверах:
1. Свен Шрайбер «Недокументированные возможности Windows 2000». Издательство «Питер» 2002 год.
Здесь очень хорошо описан механизм динамической загрузки драйвера.

2. П. И. Рудаков, К. Г. Финогенов «Язык ассемблера: уроки программирования»
Диалог МИФИ 2001 год. Очень полезная книга для того, что бы понять, как писать драйвера без всякий Wizard-ов.

3. Светлана Сорокина, Андрей Тихонов, Андрей Щербаков «Программирование драйверов и систем безопасности». Издательство «БХВ-Петербург» 2002 год. Здесь хорошо описывается многоуровневая модель драйверов.


Предупреждение: Я, ни в коей мере не претендую, как на полноту освещения темы написания драйверов, так и на 100% правильность и достоверность того, что здесь написано (но все приведенные здесь исходники проверены и являются работоспособными).
Буду благодарен всем, приславшим мне (01_artem@mail.ru) или высказавшим в форуме свои замечания.

Итак, я обращаюсь к человеку решившему написать Драйвер уровня ядра под Win2000/NT. Надеюсь, эти заметки помогут сэкономить кучу времени и сил.

Прежде всего, я бы не рекомендовал (исходя из собственного опыта) пользоваться различными библиотеками (типа NuMega и всякими другими визардами). В основном из-за того, что даже для написания простейшего драйвера необходимо хотя бы поверхностное представление о том, как он функционирует. И самый простой способ получить представление об этом-написать драйвер самому. Мне, например, не хватило терпения разобраться с NuMega, и даже «оболочки» функций динамической загрузки/выгрузки драйвера, предложенные Свен Шрайбером в своей книге, я предпочел переписать.

Итак, начнем.

Статья полностью


На сегодня все - всего доброго не забывайте нас - заходите почаще.

Громозека.

http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное