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