Microsoft выложила бесплатный инструмент для написания драйверов Windows

Microsoft выложила бесплатный инструмент для написания драйверов Windows

Microsoft опубликовала исходный код фреймворка Driver Module Framework, который ранее применялся при разработке драйверов устройств Surface и был доступен лишь разработчикам компании. В Microsoft считают, что применение фреймворка значительно упростит повторное использование кода.

DMF – в помощь разработчикам драйверов

Microsoft выпустила программную платформу (фреймворк) Driver Module Framework (DMF), призванную упростить процесс разработки структурированных WDF-драйверов (Windows Driver Frameworks) устройств для операционной системы Windows. Кроме того, по заявлению Microsoft, использование нового инструмента позволит программистам с легкостью повторно использовать собственный код в различных драйверах или делиться им с другими разработчиками.

DMF был создан командой Microsoft Devices специально для разработки драйверов устройств-трансформеров Surface и изначально предназначался только для внутреннего использования. Теперь же исходный код фреймворка опубликован на Github, популярном веб-сервисе для хостинга ИТ-проектов и их совместной разработки, под свободной лицензией MIT, и доступен всем желающим.

О недостатках WDF

Как правило, при написании драйверов устройств для Windows разработчики прибегают к помощи инструментария Windows Driver Frameworks (WDF), применение которого, в отличие от Windows Driver Model (WDM), более старого и «низкоуровнего» фреймворка, не требует от разработчика полного знакомства со множеством сложных технических нюансов для создания простейшего драйвера. Кроме того, WDF включает набор средств проверки готовой программы на наличие распространенных ошибок и позволяет выявить причины неправильного функционирования драйвера.

1wdfarchitecture.png (124 KB)

                   Традиционная модель Windows-драйвера

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

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

Новый подход к разработке

Фреймворк DMF позволяет создать тонкую «прослойку» между реализацией драйвера и WDF, которая связывает между собой все отдельные модули драйвера и клиентский код, грамотно организуя процесс их взаимодействия.

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

2dmfarchitecture.png (155 KB)

      Новая DMF-модель Windows-драйвера, предложенная Microsoft

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

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

Источник: cnews.ru