Модель драйвера Windows - Windows Driver Model
В вычисление, то Модель драйвера Windows (WDM) - также известный как Модель драйвера Win32 - это основа для драйверы устройств это было введено с Windows 98 и Windows 2000 заменить VxD, который использовался в более старых версиях Windows, таких как Windows 95 и Windows 3.1, так же хорошо как Модель драйвера Windows NT.
Обзор
Драйверы WDM размещены в стеке и взаимодействуют друг с другом через Пакеты запросов ввода / вывода (IRP). Модель драйверов Microsoft Windows объединила модели драйверов для линеек продуктов Windows 9x и Windows NT за счет стандартизации требований и сокращения объема кода, который необходимо было написать. Драйверы WDM не будут работать в операционных системах более ранних, чем Windows 98 или Windows 2000, таких как Windows 95 (до обновления OSR2, загружающего неопубликованную модель WDM), Windows NT 4.0 и Windows 3.1. Соответствуя WDM, драйверы могут быть двоичная совместимость и исходный код в Windows 98, Windows 98 Second Edition, Windows Me, Windows 2000, Windows XP, Windows Server 2003 и Виндоус виста (для обратной совместимости) на x86 -на базе компьютеров. Драйверы WDM предназначены для прямая совместимость так что драйвер WDM может работать в более новой версии Windows, чем та, для которой изначально был написан драйвер, но это будет означать, что драйвер не сможет использовать преимущества каких-либо новых функций, представленных в новой версии. WDM вообще не обратно совместимый, то есть не гарантируется, что драйвер WDM будет работать в любой более старой версии Windows. Например, Windows XP может использовать драйвер, написанный для Windows 2000 но не будет использовать какие-либо новые функции WDM, представленные в Windows XP. Однако драйвер, написанный для Windows XP, может загружаться или не загружаться в Windows 2000.
WDM существует на промежуточном уровне Windows 2000. режим ядра drivers и был введен для увеличения функциональности и упрощения написания драйверов для Windows. Хотя WDM в основном создавался двоичный и источник совместимый между Windows 98 и Windows 2000, это не всегда может быть желательным, поэтому для любой из этих операционных систем можно разработать специальные драйверы.
Драйверы режима ядра устройства
В модели драйверов Windows (WDM) для устройств Microsoft реализует подход к режим ядра драйверы, уникальные для Операционные системы Windows. WDM реализует многоуровневую архитектуру для драйверы устройств, и каждое устройство компьютера обслуживается стеком драйверов. Однако каждый драйвер в этом стеке может изолировать аппаратно-независимые функции от драйвера, расположенного выше и ниже него. Таким образом, драйверы в стеке не должны напрямую взаимодействовать друг с другом. WDM определяет архитектуру и процедуры устройства для ряда устройств, таких как дисплей и сетевая карта, известный как Спецификация интерфейса сетевого драйвера (NDIS). В архитектуре NDIS многоуровневые сетевые драйверы включают драйверы нижнего уровня, которые управляют оборудованием, и драйверы верхнего уровня, реализующие транспортировку сетевых данных, такие как Протокол управления передачей (TCP).[1]
Хотя WDM определяет три типа драйверов устройств, не все стеки драйверов для данного устройства содержат все типы драйверов устройств. Три типа драйверов устройств WDM:[2]
Водитель автобуса: Для каждого автобус На материнской плате есть один драйвер шины, который несет основную ответственность за идентификацию всех устройств, подключенных к этой шине, и реагирует на события Plug and Play. Microsoft предоставит драйверы шины как часть операционной системы,[3] Такие как PCI, PnPISA, SCSI, USB и FireWire.
Функциональный драйвер: это основной драйвер для устройства, который обеспечивает рабочий интерфейс для устройства, обрабатывая операции чтения и записи. Функциональные драйверы пишутся производителями устройств, и для их взаимодействия с оборудованием они зависят от конкретного драйвера шины, присутствующего в операционной системе Windows.[4]
Драйвер фильтра: Этот драйвер является необязательным и может изменять поведение устройства, например запросы ввода и вывода. Эти драйверы могут быть реализованы как драйверы фильтров нижнего и верхнего уровня.[5]
Стек объектно-ориентированных драйверов
Функциональные драйверы и драйверы шины часто реализуются как пары драйвер / минидрайвер, которые на практике представляют собой либо класс / мини-класс, либо пару порт / минипорт.[6]
Драйверы шины для устройств, подключенных к шине, реализованы как драйверы классов и не зависят от оборудования. Они будут поддерживать работу определенного типа устройства. Операционные системы Windows включают ряд драйверов классов, например драйвер kbdclass.sys для клавиатур. С другой стороны, драйверы миникласса поставляются производителем устройства и поддерживают только операции, специфичные для конкретного устройства, для определенного устройства данного класса.[7]
Драйверы порта поддерживают общую ввод, вывод (I / O) операции для периферийного аппаратного интерфейса. Основная функциональность драйверов портов определяется операционной системой, а операционные системы Windows интегрируют различные драйверы портов. Например, драйвер порта i8042prt.sys для микроконтроллера 8042 подключает PS / 2 клавиатуры к периферийной шине материнской платы. Драйверы минипорта, как и драйверы мини-класса, поставляются производителями оборудования и поддерживают только определенные операции периферийного оборудования, подключенного к порту на материнской плате.[8]
Каждый драйвер, обрабатывающий запрос ввода-вывода для устройства, имеет соответствующий объект, который загружается в основная память. Объект устройства создается операционной системой Windows из соответствующего класса устройства. Объекты устройства содержат структуры типа DEVICE_OBJECT, в которых хранятся указатели на их драйвер. Во время выполнения эти указатели используются для нахождения процедуры диспетчеризации драйвера и функций-членов. В стеке драйвера WDM объект устройства драйвера фильтра, известный как верхний фильтр, получит Пакет запроса ввода / вывода (IRP) для устройства из диспетчера ввода-вывода. Если драйвер верхнего фильтра не может обработать запрос, он найдет объект драйвера на одну ступень ниже в стеке драйверов. IRP передается вниз по стеку драйвера путем вызова функции IoCallDrive () и обрабатывается объектом устройства функционального драйвера, также известным как объект функционального устройства. Объект устройства функционального драйвера, в свою очередь, может передавать IRP нижнему фильтру, другому объекту устройства фильтра. Затем IRP может быть передан драйверу шины, который работает как объект физического устройства. Объект драйвера шины находится внизу стека драйверов и взаимодействует с уровень аппаратной абстракции, который является частью Ядро операционной системы Windows и позволяет операционным системам Windows работать на различных процессоры, разные блок управления памятью архитектуры и различные компьютерные системы с различными архитектурами шины ввода-вывода.[9] Выполнение IRP завершается, когда любой из объектов драйвера в стеке возвращает запрос диспетчеру ввода-вывода с результатом и флагом состояния.[10]
Драйверы устройств для разных операционных систем Windows
Платформа WDM была разработана Microsoft для упрощения взаимодействия между операционной системой и драйверами внутри ядра. В операционных системах Windows драйверы реализованы как Библиотеки динамической компоновки Файлы .DLL или .SYS. Драйверы, совместимые с WDM, должны следовать правилам проектирования, инициализации, plug-and-play, управления питанием и распределения памяти. На практике программисты драйвера WDM повторно используют большие фрагменты кода при создании новых объектно-ориентированный драйверы. Это означает, что драйверы в стеке WDM могут содержать остаточную функциональность, которая не задокументирована в спецификациях.[11] Драйверы, прошедшие проверку качества Microsoft, имеют цифровую подпись Microsoft. В Тесты совместимости оборудования Microsoft Комплект для разработки драйверов включает тесты надежности и стресс-тесты.[12]
Драйвер устройства, не предназначенный для конкретного компонента оборудования, может позволить другому устройству работать. Это связано с тем, что базовая функциональность класса аппаратных устройств аналогична. Функциональные возможности класса видеокарт, например, позволяют драйверу Microsoft Basic Display Adapter работать с широким спектром видеокарт. Однако установка неправильного драйвера для устройства будет означать, что все функции устройства не могут быть использованы, и может привести к снижению производительности и дестабилизации операционной системы Windows. Поставщики оборудования могут выпускать обновленные драйверы устройств для определенных операционных систем Windows, чтобы повысить производительность, добавить функциональность или исправить ошибки. Если устройство не работает должным образом, необходимо загрузить и установить последние версии драйверов устройств с веб-сайта поставщика.[13]
Драйверы устройств разработаны для определенных версий операционной системы Windows, а драйверы устройств для предыдущей версии Windows могут работать неправильно или вообще не работать с другими версиями. Поскольку многие драйверы устройств работают в режиме ядра, установка драйверов для предыдущей версии операционной системы может дестабилизировать операционную систему Windows. Поэтому для миграции компьютера на более новую версию операционной системы Windows требуется, чтобы были установлены новые драйверы устройств для всех компонентов оборудования. Поиск обновленных драйверов устройств и их установка для Windows 10 внесла сложности в процесс миграции.[14]
Общие проблемы совместимости драйверов устройств включают: 32-битный драйвер устройства требуется для 32-разрядной операционной системы Windows, а 64-битный драйвер устройства требуется для 64-битной операционной системы Windows. 64-разрядные драйверы устройств должны быть подписаны Microsoft, поскольку они работают в режиме ядра и имеют неограниченный доступ к аппаратному обеспечению компьютера. Для операционных систем до Windows 10 Microsoft разрешила поставщикам подписывать свои 64-разрядные драйверы самостоятельно, при условии, что поставщики провели тесты на совместимость. Однако теперь 64-разрядные драйверы Windows 10 должны быть подписаны Microsoft. Поэтому поставщики устройств должны отправлять свои драйверы в Microsoft для тестирования и утверждения. Пакет установки драйвера включает все файлы в каталоге .inf, и все файлы в пакете должны быть установлены, в противном случае установка драйвера устройства может завершиться ошибкой. Для версий операционной системы до Windows 10 не все файлы, необходимые для установки драйвера, были включены в пакет, поскольку это требование не всегда соблюдалось. Некоторые установщики драйверов устройств имеют пользовательский интерфейс. GUI, часто требующие ввода конфигурации пользователя. Отсутствие пользовательского интерфейса не означает, что установка драйвера устройства не удалась. Кроме того, драйверы устройств Windows 10 не могут включать пользовательский интерфейс. В Спецификация интерфейса сетевого драйвера (NDIS) 10.x используется для сетевых устройств операционной системой Windows 10. Драйверы сетевых устройств для Windows XP используйте NDIS 5.x и может работать с последующими операционными системами Windows, но по соображениям производительности драйверы сетевых устройств должны реализовывать NDIS 6.0 или выше.[15] По аналогии, WDDM - это модель драйвера для Windows Vista и выше, которая заменяет XPDM, используемый в графических драйверах.
Диспетчер устройств
В Диспетчер устройств - это апплет панели управления в операционных системах Microsoft Windows. Это позволяет пользователям просматривать и управлять оборудованием, подключенным к компьютеру. Он позволяет пользователям просматривать и изменять свойства оборудования, а также является основным инструментом для управления драйверами устройств.[16]
Критика
Модель драйвера Windows, хотя значительно улучшена по сравнению с VxD и Модель драйвера Windows NT использовался до этого, подвергся критике со стороны разработчиков программного обеспечения драйверов,[17] наиболее важно для следующего:
- Взаимодействие с управление энергопотреблением события и подключи и играй сложно. Это может привести к ситуациям, когда машины Windows не могут войти или выйти режимы сна правильно из-за ошибок в коде драйвера.
- Отмену ввода-вывода сложно сделать правильно.[18]
- Для каждого драйвера требуется сложный шаблонный код поддержки.
- Нет поддержки написания в чистом виде пользовательский режим драйверы.
Также был ряд опасений по поводу качества документации и образцов, предоставленных Microsoft.
Из-за этих проблем Microsoft выпустила новый набор фреймворков поверх WDM, названный Платформы драйверов Windows (WDF; ранее Windows Driver Foundation), который включает Платформа драйвера режима ядра (KMDF) и Платформа драйвера пользовательского режима (UMDF). Виндоус виста поддерживает как чистый WDM, так и более новый WDF. KMDF также доступен для загрузки для Windows XP и даже Windows 2000, а UMDF доступен для Windows XP и выше.
Смотрите также
Рекомендации
- ^ Марко Виейра; Жоао Карлос Кунья, ред. (2013). Надежные вычисления: 14-й Европейский семинар, EWDC 2013, Коимбра, Португалия, 15-16 мая 2013 г., Материалы. Springer. п. 64. ISBN 9783642387890.
- ^ Марко Виейра; Жоао Карлос Кунья, ред. (2013). Надежные вычисления: 14-й Европейский семинар, EWDC 2013, Коимбра, Португалия, 15–16 мая 2013 г., Материалы. Springer. п. 64. ISBN 9783642387890.
- ^ Марко Виейра; Жоао Карлос Кунья, ред. (2013). Надежные вычисления: 14-й Европейский семинар, EWDC 2013, Коимбра, Португалия, 15-16 мая 2013 г., Материалы. Springer. п. 64. ISBN 9783642387890.
- ^ Марко Виейра; Жоао Карлос Кунья, ред. (2013). Надежные вычисления: 14-й Европейский семинар, EWDC 2013, Коимбра, Португалия, 15-16 мая 2013 г., Материалы. Springer. п. 64. ISBN 9783642387890.
- ^ Марко Виейра; Жоао Карлос Кунья, ред. (2013). Надежные вычисления: 14-й Европейский семинар, EWDC 2013, Коимбра, Португалия, 15-16 мая 2013 г., Материалы. Springer. п. 64. ISBN 9783642387890.
- ^ Билл Бланден (2009). Арсенал руткитов: побег и уклонение. Издательство "Джонс и Бартлетт". п. 460. ISBN 9781449661229.
- ^ Билл Бланден (2009). Арсенал руткитов: побег и уклонение. Издательство "Джонс и Бартлетт". п. 460. ISBN 9781449661229.
- ^ Билл Бланден (2009). Арсенал руткитов: побег и уклонение. Издательство "Джонс и Бартлетт". п. 460. ISBN 9781449661229.
- ^ Билл Бланден (2009). Арсенал руткитов: побег и уклонение. Издательство "Джонс и Бартлетт". С. 460–461. ISBN 9781449661229.
- ^ Дэйв Пенклер; Манфред Рейтенсписс; Фрэнсис Тэм, ред. (2006). Доступность услуг: Третий международный симпозиум по доступности услуг, ISAS 2006, Хельсинки, Финляндия, 15–16 мая 2006 г., пересмотренные избранные документы. Springer Science & Business Media. п. 124. ISBN 9783540687245.
- ^ Дэйв Пенклер; Манфред Рейтенсписс; Фрэнсис Тэм, ред. (2006). Доступность услуг: Третий международный симпозиум по доступности услуг, ISAS 2006, Хельсинки, Финляндия, 15–16 мая 2006 г., пересмотренные избранные документы. Springer Science & Business Media. п. 124. ISBN 9783540687245.
- ^ Дэйв Пенклер; Манфред Рейтенсписс; Фрэнсис Тэм, ред. (2006). Доступность услуг: Третий международный симпозиум по доступности услуг, ISAS 2006, Хельсинки, Финляндия, 15-16 мая 2006 г., пересмотренные избранные документы. Springer Science & Business Media. п. 132. ISBN 9783540687245.
- ^ Байрон Райт и Леон Плеснярски (2016). Руководство специалиста Microsoft по Microsoft Windows 10 (экзамен 70-697, Настройка устройств Windows). Cengage Learning. п. 96. ISBN 9781285868578.CS1 maint: использует параметр авторов (связь)
- ^ Байрон Райт и Леон Плеснярски (2016). Руководство специалиста Microsoft по Microsoft Windows 10 (экзамен 70-697, Настройка устройств Windows). Cengage Learning. п. 96. ISBN 9781285868578.CS1 maint: использует параметр авторов (связь)
- ^ Байрон Райт и Леон Плеснярски (2016). Руководство специалиста Microsoft по Microsoft Windows 10 (экзамен 70-697, Настройка устройств Windows). Cengage Learning. п. 96. ISBN 9781285868578.CS1 maint: использует параметр авторов (связь)
- ^ Байрон Райт и Леон Плеснярски (2016). Руководство специалиста Microsoft по Microsoft Windows 10 (экзамен 70-697, Настройка устройств Windows). Cengage Learning. п. 96. ISBN 9781285868578.CS1 maint: использует параметр авторов (связь)
- ^ Оней, Уолтер (6 мая 2003 г.). «Знакомство с Windows Driver Framework». Дайджест разработчиков драйверов для Windows. Vol. 1 шт. 3. Архивировано из оригинал на 2016-01-25.
- ^ «Правила завершения / отмены ввода-вывода». MSDN. Microsoft. 5 мая 2003 г.. Получено 2018-02-08.
- Финнел, Линн (2000). Экзамен MCSE 70-215, Microsoft Windows 2000 Server. Microsoft Press. ISBN 1-57231-903-8.
- Оней, Уолтер (2003). Программирование модели драйвера Windows, Microsoft Press, ISBN 0-7356-1803-8.
внешняя ссылка
- Концепции ввода-вывода WDM - В этой статье дается общий обзор концепций ввода-вывода, определенных в модели драйверов Windows.
- Основы API драйвера Windows - В этой статье рассказывается об основах драйверов звуковой карты, таких как WDM, ASIO, MME, DirectX и др.
- Канал 9 Видео - Интервью с группой управления устройствами и установки в Microsoft, в основном охватывающее Подключи и играй.
- Лекционные заметки по программированию ядра Windows на Wayback Machine (архивировано 3 марта 2016 г.) - Фрагмент книги бесплатных лекций, в котором подробно описывается создание драйверов Windows, программирование в режиме ядра и управление памятью.