Как по мне — то стОит. Однако сразу сильно вглубь не надо рассматривать — те, кого это сильно заинтересует, уже сами найдут нужное.
Но на уровне хотябы Helloworld и немного глубже хотелось бы посмотреть.
Причем особо хотелось бы про отличие в программировании r0 и r3.
Спасибо большое за статью, прочитал на одном дыхании. Было бы замечательно почитать про программирование драйверов. Статьи и книги — сухой технический язык, а тут живо и интересно. Жду продолжения
Тема достаточно интересная. Так как на хабре в последнее время часто обсуждаются различные самодельные девайсы, интересно было бы почитать про разработку драйверов под них. Еще интересно было бы почитать про драйвера в Windows Mobile (CE), но это уже другое.
Да уж, а инфу искать — замучаешься =)
Сам когда-то писал usb-hid драйвер для Windows CE 5, это было весело =)
Хотя, по сути там дрова — всего лишь библиотеки, зарегистрированные особым образом в реестре.
Получилось несколько сумбурно, в следующий раз постарайтесь не прыгать с мысли на мысль, а концентрироваться на чем-то одном ;) Добавьте пожалуйста тег «системное программирование» и неплохо было бы перенести в соответствующий блог ;)
Кстати у меня разработка драйверов ассоциируется почему-то не с Руссиновичем, а с Уолтером Оуни :) Руссинович профи — но скорее в сфере Windows Internals, и читать его полезно не начинающим, а более продвинутым.
> прикладное приложение не может просто так взять и получить доступ к памяти другого процесса
Хм, NtReadVirtualMemory/NtWriteVirtualMemory знаем? А схема — CreateRemoteThread/NtVriteVirtualMemory как самый распространённый способ инжекта кода в юзер мод процессы? так что может :)
> прикладное приложение всегда можно прервать и дать немного процессорного времени другому приложению
В Ядре kernel preemption тоже никто не отменял ;)
Подобные вещи специфичны для каждой ОС. Более детально — обратитесь например к самплу NDIS драйвера в WDK для интеловской сетевой, там можно поглядеть в действии WDK API касательно и DMA, MMR и тд
Интересно, однозначно. Если можно высказать личную заинтересованность — драйвера под embedded WinCE и Linux, хотя как кажется мне, особой разницы тут не будет.
Разница между CE и настольной виндой в программировании драйверов весьма и весьма существенна.
Дрова под CE — обычные DLL. Просто их особым образом устанавливать нужно.
А вообще, достаточно сложно найти по ним инфу. (Во всяком случае, 2 года назад, когда я и писал драйвер USB-HID для WM)
Тему продолжать стоит однозначно!!! Очень интересно.
Если есть возможность, то хотелось бы увидеть сравнения XP, Vista, 2008 в уровнях работы на ring 0, хотя у последних двух одно ядро. Ну, и, как уже кто — то высказывал — если есть возможность, то сравнение аналогичных функция в других ОС, но даже без этого будет интересно!
Программирование в ring0 для Windows: вводная статья