Программирование драйверов для Windows

Программирование драйверов для Windows

С пользовательским режимом всё понятно. В kernel mode самый низкий уровень аппаратный. Дальше идёт HAL, выше — диспетчер ввода — вывода и драйвера устройств в одной связке, а также ядрышко вместе с исполнительными компонентами. О HAL я уже говорила, поэтому поподробнее поговорим об исполнительных компонентах. Что они дают? Прежде всего они приносят пользу ядру. Как ты уже наверняка уяснил себе по схеме, ядро отделено от исполнительных компонентов.

API (Application Programming Interface) — это интерфейс прикладного программирования. Он позволяет обращаться прикладным программам к системным сервисам через их специальные абстракции. API-интерфейсов несколько, таким образом в Windows-системах присутствуют несколько подсистем.

Написание драйвера в подробностях №1

Но не всё так хорошо. Основа WINDOWS NT (имеются ввиду 32-х разрядные версии) — подсистема Win32. Приложения, заточенные под одну подсистему не могут вызывать функции другой. Все остальные (не Win32) подсистемы существуют в винде только в эмуляции и реализуются функции этих подсистем только через соответствующие функции винды. Убогость и ограниченность приложений, разработанных, скажем, для подсистемы POSIX и запущенных под винду — очевидны.

А раз так, то пора закругляться. Наш краткий обзор архитектуры Windows NT можно считать завершённым. Этого тебе пока хватит для общего понимания концепций Windows NT, и концепций написания драйверов под эту ось — как следствие.

PS. Да только не надо излюбленных народом комментариев вида «не нравится — пиши сам». Писал статьи и не раз. Поэтому и комментирую. Это так, к слову и на всякий случай.

! Важно
Попытаться внушить читателю мысль, что написание драйверов — это не так страшно как кажется. А уж если человек заинтересовался, то поискать более конкретный материал по теме он всегда успеет.

Да, людям нравится фастфуд, потому что его можно быстро сьесть и не задумываться о его содержании. Так и тут, чем больше и детальнее статья — тем меньше у нее популярность. Уже не раз убедился на своих статьях, когда в комментариях пишут «Да все отлично», а по оценкам видно, что мало кому это нужно. Однако фастфуд никогда не заменит домашней еды. Именно по этому, и потому, что мне нравится порой отвлечься и пографоманствовать, а также поделится знаниями и расположить по полочкам свои, я буду продолжать писать длинные, подробные, хоть и скушные статьи. Кому надо — тот оценит.

Ну не знаю… Исходя из моего опыта преподавания как программирования вообще, так и Linux-а в частности, могу сказать, что подобные «атомарные» знания дают гораздо больше эффекта, нежели пространные витийствования на тему. Людям надо дать зацепку. Пусть даже они не поймут все и сразу, но зато что-то останется в памяти, и при случае можно дать этому ход.

Подход «а-ля матан» мне категорически не нравится. Человека грузят 5-10 леммами (с доказательствами) только для того, чтобы потом доказать основную теорему: «как очевидно следует из бла и бла бла» (которые были 15 страниц назад). В результате, 90% людей вообще не помнят и не понимают о чем речь.


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *