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


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

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

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

    Cross-NT library.


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

    Зачем?

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




    Как обычно тестеры are very welcome!
    Автор библиотек ждет обратной связи. alterX@alter.org.ua (remove X)
    • +21
    • 2.1k
    • 5
    Support the author
    Share post

    Similar posts

    Comments 5

      +2
      ну написали бы поподробней. В чем минусы, в чем плюсы.Какие ощущения и подводные камни от ее использования. А так: «просто есть такая штука». Ну хрошо, что есть :-)
        +1
        дело в статусе библиотеки, она wip (work in progress). Это ее минус.
        О существовании аналогов, мне ничего неизвестно.
        А плюс возможность написать один универсальный драйвер вместо десяти.

        Топик скорее призван пробудить интерес разработчиков к библиотеке и стимулировать ее развитие.
          0
          ну есть не совсем аналог, но более узкоспециализированное решение для построение драйверов файловых систем: FUSE (DOKAN для Windows).
          Но это то что знаю я, может есть и другие решения.
            +2
            Ну как так «о существовании аналогов, мне ничего неизвестно»? Это же несерьезно. Уже более пяти лет половина примернов в WDK — на WDF, а в WDK8 — так вообще WDM тостера больше нет. То есть вообще: все новые разработчики драйверов будут начинать исключительно с WDF. При этом WDF избавляет от гораздо большего количества головной боли, чем «отсутствие InterlockedXxx операций в WinNT до версии 4.0».

            Что же до UniATA — я так и не понял, на фига здесь уже в который раз появляется статья о нем. Ну был в XP «Generic ATA controller», на который рекомендовалось сменить «специфичный» драйвер при смене материнской платы. В Vista+ даже этого делать не нужно. Чего конкретно дает UniATA?
          +1
          Я бы описал эту библиотеку несколько по-другому. Это даже не фреймворк, это слой совместимости со слегка меняющимся Native API винды с одной стороны (как написано, от NT4 до NT6) и неизменным API последней версии с другой.

          Насчёт work in progress, это не минус, просто, насколько я понимаю, она сделана ровно до того, чтобы работала uniata (и какие-то другие драйвера её использующие).

          Only users with full accounts can post comments. Log in, please.