User-Mode Driver Framework (UMDF) — платформа для разработки драйверов пользовательского режима, впервые представленная с Windows Vista, и так же доступная для Windows XP. Это облегчает создание драйверов для определенных классов устройств.[1]
User-Mode Driver Framework (UMDF) | |
---|---|
Тип | Device-driver development platform |
Разработчик | Microsoft |
Написана на | C, C++ |
Операционная система | Microsoft Windows |
Первый выпуск | 12 октября 2004 |
Последняя версия | 2.27 (24 марта 2019 ) |
Репозиторий | github.com/microsoft/Windows-Driver-Frameworks |
Лицензия | MIT License |
Сайт | docs.microsoft.com/en-us/windows-hardware/drivers/wdf/overview-of-the-umdf |
Overview
правитьСтандартные драйверы устройств может быть сложно написать, потому что они должны обрабатывать очень широкий диапазон состояний системы и устройств, особенно в многопоточной программной среде. Плохо написанные драйверы устройств могут вызвать серьезные повреждения системы (например: BSoD и повреждение данных) поскольку все стандартные драйверы имеют высокие привилегии при прямом доступе к ядру. Платформа драйверов пользовательского режима изолирует ядро от проблем прямого доступа к драйверам, вместо этого предоставляя новый класс драйверов с выделенным программным интерфейсом приложения на пользовательском уровне прерываний и управления памятью. В случае возникновения ошибки новая структура позволяет немедленно перезапустить драйвер, не влияя на систему. Это особенно полезно для устройств, которые периодически подключаются к системе или поддерживают горячую замену через технологию шины, такую как USB или FireWire.
Согласно Microsoft, драйверы UMDF проще писать и отлаживать, чем драйверы режима ядра.[2] Однако UMDF не будет использоваться для устройств с высокой производительностью или с отслеживанием состояния.
Первая версия UMDF была отправлена как часть Windows Media Player версии 10, 12 октября 2004 года. Под кодовым названием «Crescent» он был разработан для поддержки драйвера Media Transfer Protocol, и для него не было предоставлено никаких общедоступных интерфейсов или документации. Позже Microsoft решила превратить UMDF в платформу для разработки драйверов устройств.[3]
История версий
править- UMDF 1.5-1.9, поддерживает Windows XP и новее.
- UMDF 1.11, поддерживает Windows Vista, Windows Server 2008 и новее.[4]
- UMDF 2.0, поддерживает Windows 8.1 и новее.[5]
Архитектура
правитьДрайвер UMDF — это библиотека DLL, основанная на Component Object Model (COM) Microsoft. Однако UMDF не использует COM для загрузки, выгрузки или управления параллелизм; он использует COM только как шаблон проектирования, например, используя интерфейс COM IUnknown . При запуске UMDF вызывает «DllGetClassObject», чтобы получить указатель на интерфейс «IClassFactory» в драйвере, а затем использует метод «CreateInstance» интерфейса IClassFactory для создания экземпляра объекта обратного вызова драйвера.
Объект драйвера — это экземпляр интерфейса IWDFDriver, предоставляемого фреймворком. Драйвер предоставляет набор обратных вызовов через COM-интерфейс IDriverEntry, который является основной точкой входа для настройки драйвера.
См. также
правитьИспользованная литература
править- ↑ Programming Drivers for the UMDF . Дата обращения: 2 января 2022. Архивировано 2 января 2022 года.
- ↑ Advantages of Writing UMDF Drivers . Дата обращения: 2 января 2022. Архивировано 23 июля 2015 года.
- ↑ Charles Torre, Peter Wieland. Peter Wieland: User Mode Driver Framework . Channel 9. Microsoft (18 сентября 2006). Дата обращения: 18 сентября 2006. Архивировано 17 февраля 2007 года.
- ↑ Microsoft Support. User-Mode Driver Framework version 1.11 update for Windows Vista, Windows Server 2008, Windows 7, and Windows Server 2008 R2 . Microsoft. Дата обращения: 1 декабря 2012. Архивировано 30 ноября 2012 года.
- ↑ User-Mode Driver Framework Frequently Asked Questions (Windows Drivers) . Microsoft. Дата обращения: 4 июня 2014. Архивировано 22 апреля 2014 года.
Ссылки
править- docs.microsoft.com/en-us/windows-hardware/drivers/wdf/getting-started-with-umdf-version-2 — официальный сайт User-Mode Driver Framework
- Peter Wieland’s blog — developer lead on the UMDF team at Microsoft