- PVSM.RU - https://www.pvsm.ru -

Универсальный подход к написанию универсальных драйверов

Универсальный подход к написанию универсальных драйверов
Считаю, что настало время Свету Белому увидеть еще одну малоизвестную разработку с большим потенциалом. Ее автором является уже известный публике (благодаря одному [1] из моих предыдущих постов) Alter [2] и некто DeathSoft.

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

Лишь единицы-гуру владеют этим сакральным искусством в совершенстве, остальным приходиться прибегать к фреймворкам [3], сильно облегчающим задачу, или ограничиваться одной (чаще всего самой популярной) платформой. Так вот, капитан очевидность сообщает, в мире драйверов тоже существуют фреймворки и библиотеки облегчающие их написание. Посему представляю вашему вниманию:

Cross-NT library [4].

CrossNtK.lib — библиотека с открытыми исходными кодами для написания драйверов, бинарно-совместимых с различными версиями NT от 3.51 до 2005 (Vista). В частности? на ее основе создан универсальный драйвер контролеров ATA-устройств — UniATA. [5]

Зачем?

А затем, что это imho способствует популярности и облегчает поддержку продукта. Лично мне очень нравятся программы, которые ставятся и работают где угодно. И наоборот, очень раздражают те, что требуют определенного ServicePack, имеют отдельный дистрибутив под каждую ОС и т.п. И, вопреки распространенному мнению, сделать драйвер универсальным не так сложно.

Автор: Jeditobe


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/open-source/12768

Ссылки в тексте:

[1] одному: http://habrahabr.ru/post/149032/

[2] Alter: http://alter.org.ua

[3] фреймворкам: http://ru.wikipedia.org/wiki/%D0%A4%D1%80%D0%B5%D0%B9%D0%BC%D0%B2%D0%BE%D1%80%D0%BA

[4] Cross-NT library: http://alter.org.ua/ru/soft/nt_kernel/crossnt/

[5] UniATA.: http://alter.org.ua/ru/soft/win/uni_ata/

[6] Примеры + способы: http://alter.org.ua/ru/docs/nt_kernel/crossnt/