Microsoft опубликовала исходный код фреймворка Driver Module Framework, который ранее применялся при разработке драйверов устройств Surface и был доступен лишь разработчикам компании. В Microsoft считают, что применение фреймворка значительно упростит повторное использование кода.
При разработке с применением WDF на плечи программиста ложится ответственность за реализацию механизмов коммуникации между отдельными модулями драйвера и их синхронизации с контекстом устройства в верном порядке и подходящее время, при этом избегая взаимных блокировок, что не всегда является тривиальной задачей. Контекст устройства (на схемах выделен зеленым цветом) в Windows – внутренняя структура, используемая для управления информацией об устройстве вывода. Приложения сперва направляют данные на вывод (например, на экран) в контекст устройства, и лишь потом Windows перенаправляет его содержимое непосредственно на устройство.
При необходимости повторного использования кода одного из модулей, программисту необходимо досконально разобраться в том, как именно модули взаимодействуют друг с другом, прежде чем извлекать нужный исходный код, что отнимает много времени и зачастую ведет к возникновению ошибок.
Новый подход к разработке
Фреймворк DMF позволяет создать тонкую «прослойку» между реализацией драйвера и WDF, которая связывает между собой все отдельные модули драйвера и клиентский код, грамотно организуя процесс их взаимодействия.
Кроме того, каждый отдельно взятый модуль получает собственную область в контексте устройства, которая доступна только ему, что снимает с программиста обязанность предусматривать механизмы поочередного доступа каждого модуля к контексту устройства.
Новая DMF-модель Windows-драйвера, предложенная Microsoft
Обратные вызовы WDF (на схеме окрашены в красный цвет) теперь также существуют независимо друг от друга в каждом модуле, а DMF отвечает за перехват, перенаправление вызовов к соответствующим модулям, а также возвращение результата обработки данных модулями.
Подобный подход позволяет рассматривать модуль драйвера как самостоятельную единицу, которую при необходимости можно легко отделить от остального кода и перенести в другой проект практически без изменений, будучи уверенным, что он окажется работоспособным.
Подробнее на гите:
При разработке с применением WDF на плечи программиста ложится ответственность за реализацию механизмов коммуникации между отдельными модулями драйвера и их синхронизации с контекстом устройства в верном порядке и подходящее время, при этом избегая взаимных блокировок, что не всегда является тривиальной задачей. Контекст устройства (на схемах выделен зеленым цветом) в Windows – внутренняя структура, используемая для управления информацией об устройстве вывода. Приложения сперва направляют данные на вывод (например, на экран) в контекст устройства, и лишь потом Windows перенаправляет его содержимое непосредственно на устройство.
При необходимости повторного использования кода одного из модулей, программисту необходимо досконально разобраться в том, как именно модули взаимодействуют друг с другом, прежде чем извлекать нужный исходный код, что отнимает много времени и зачастую ведет к возникновению ошибок.
Новый подход к разработке
Фреймворк DMF позволяет создать тонкую «прослойку» между реализацией драйвера и WDF, которая связывает между собой все отдельные модули драйвера и клиентский код, грамотно организуя процесс их взаимодействия.
Кроме того, каждый отдельно взятый модуль получает собственную область в контексте устройства, которая доступна только ему, что снимает с программиста обязанность предусматривать механизмы поочередного доступа каждого модуля к контексту устройства.
Новая DMF-модель Windows-драйвера, предложенная Microsoft
Обратные вызовы WDF (на схеме окрашены в красный цвет) теперь также существуют независимо друг от друга в каждом модуле, а DMF отвечает за перехват, перенаправление вызовов к соответствующим модулям, а также возвращение результата обработки данных модулями.
Подобный подход позволяет рассматривать модуль драйвера как самостоятельную единицу, которую при необходимости можно легко отделить от остального кода и перенести в другой проект практически без изменений, будучи уверенным, что он окажется работоспособным.
Подробнее на гите:
Пожалуйста,
Вход
или
Регистрация
для просмотра содержимого URL-адресов!