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 включает набор средств проверки готовой программы на наличие распространенных ошибок и позволяет выявить причины неправильного функционирования драйвера.
Традиционная модель Windows-драйвера
При разработке с применением WDF на плечи программиста ложится ответственность за реализацию механизмов коммуникации между отдельными модулями драйвера и их синхронизации с контекстом устройства в верном порядке и подходящее время, при этом избегая взаимных блокировок, что не всегда является тривиальной задачей. Контекст устройства (на схемах выделен зеленым цветом) в Windows – внутренняя структура, используемая для управления информацией об устройстве вывода. Приложения сперва направляют данные на вывод (например, на экран) в контекст устройства, и лишь потом Windows перенаправляет его содержимое непосредственно на устройство.
При необходимости повторного использования кода одного из модулей, программисту необходимо досконально разобраться в том, как именно модули взаимодействуют друг с другом, прежде чем извлекать нужный исходный код, что отнимает много времени и зачастую ведет к возникновению ошибок.
Новый подход к разработке
Фреймворк DMF позволяет создать тонкую «прослойку» между реализацией драйвера и WDF, которая связывает между собой все отдельные модули драйвера и клиентский код, грамотно организуя процесс их взаимодействия.
Кроме того, каждый отдельно взятый модуль получает собственную область в контексте устройства, которая доступна только ему, что снимает с программиста обязанность предусматривать механизмы поочередного доступа каждого модуля к контексту устройства.
Новая DMF-модель Windows-драйвера, предложенная Microsoft
Обратные вызовы WDF (на схеме окрашены в красный цвет) теперь также существуют независимо друг от друга в каждом модуле, а DMF отвечает за перехват, перенаправление вызовов к соответствующим модулям, а также возвращение результата обработки данных модулями.
Подобный подход позволяет рассматривать модуль драйвера как самостоятельную единицу, которую при необходимости можно легко отделить от остального кода и перенести в другой проект практически без изменений, будучи уверенным, что он окажется работоспособным.
Источник: cnews.ru
Еще никто не комментировал данный материал.
Написать комментарий