Руководство по проектированию архитектуры драйвера в режиме ядра
Примечание.
Сведения о интерфейсах программирования, которые драйвер может реализовать или вызвать, см. в справочнике по драйверу в режиме ядра.
В этом разделе содержатся общие понятия, помогающие понять программирование в режиме ядра и описывать конкретные методы программирования ядра. Общие сведения о драйверах Windows см. в статье "Начало разработки драйверов Windows", в котором представлен общий обзор компонентов Windows, перечислены типы драйверов устройств, используемых в Windows, рассматриваются цели драйверов устройств Windows и рассматриваются универсальные примеры драйверов устройств, включенных в комплект.
В этом разделе содержатся концептуальные сведения, описывающие и помогающие создавать драйверы в режиме ядра.
Обзор, содержащий следующее:
- Обзор компонентов Windows
- Цели разработки драйверов в режиме ядра
- Каталог примеров драйверов в режиме ядра
- Рекомендации по разработке драйверов ядра, скомпилированные командой Microsoft Surface
Компоненты режима ядра описывают основные диспетчеры и компоненты операционной системы Windows.
Компонент Description Менеджеры Диспетчер объектов в режиме ядра Windows Управляет объектами: файлами, устройствами, механизмами синхронизации, разделами реестра и т. д. Диспетчер памяти в режиме ядра Windows Управляет физической памятью для операционной системы. Процесс режима ядра Windows и диспетчер потоков Обрабатывает выполнение всех потоков в процессе. Диспетчер ввода-вывода в режиме ядра Windows Управляет взаимодействием между приложениями и интерфейсами, предоставляемыми драйверами устройств. Диспетчер самонастраивающийся режима ядра Windows Подсистема диспетчера ввода-вывода, диспетчер самонастраивающийся (PnP) позволяет компьютеру распознавать, когда устройство добавляется в систему. Power Manager в режиме ядра Windows Управляет упорядоченным изменением состояния питания для всех устройств, поддерживающих изменения состояния питания. Диспетчер конфигурации в режиме ядра Windows Управляет реестром, например мониторинг изменений в реестре или регистрация обратных вызовов для определенных данных реестра. Диспетчер транзакций ядра Windows в режиме ядра Реализует обработку транзакций в режиме ядра. Монитор безопасности в режиме ядра Windows Предоставляет подпрограммы для драйвера для работы с управлением доступом. Библиотеки Библиотека ядра в режиме ядра Windows Реализует основные функции, от которых зависит все остальное в операционной системе. Ядро Microsoft Windows предоставляет базовые низкоуровневые операции, такие как планирование потоков или прерываний оборудования маршрутизации. Библиотека поддержки в режиме ядра Windows Относится к компонентам режима ядра, предоставляющим различные службы драйверам устройств, включая управление объектами, управление памятью, управление процессами и потоками, управление входными и выходными данными и управление конфигурацией. Библиотека времени выполнения в режиме ядра Windows Набор общих подпрограмм служебной программы, необходимых различным компонентам режима ядра. Безопасная строка в режиме ядра Windows Безопасная строковая библиотека для обеспечения большей безопасности в разработке в режиме ядра. Библиотека DMA в режиме ядра Windows Библиотека прямого доступа к памяти (DMA) для разработчиков драйверов устройств. Библиотека HAL в режиме ядра Windows Аппаратный уровень абстракции (HAL) для разработки драйверов в режиме ядра. Библиотека CLFS в режиме ядра Windows Система ведения журнала транзакций — общая файловая система журналов (CLFS). Библиотека WMI в режиме ядра Windows Общий механизм управления компонентами, называемый инструментарием управления Windows (WMI). Написание драйверов WDM и введение в WDM предоставляют сведения, необходимые для записи драйверов с помощью модели драйверов Windows (WDM ).
Объекты устройств и другие разделы в объектах устройств и стеках устройств описывают, как операционная система представляет устройства объектами устройства.
Управление памятью для драйверов Windows показывает, как драйверы режима ядра выделяют память для таких целей, как хранение внутренних данных, буферизация данных во время операций ввода-вывода и совместное использование памяти с другими компонентами режима ядра и пользовательского режима.
Безопасность от контроля доступа и привилегий устройств к SDDL для объектов устройств гарантирует, что драйверы являются максимально безопасными.
Обработка irPs описывает, как драйверы в режиме ядра обрабатывают пакеты запросов ввода-вывода (IRPs).
Прямой доступ к памяти DMA (DMA) является критически важным аспектом разработки драйверов, а разделы в этом узле охватывают DMA от A до Z.
Объекты контроллера представляют физический контроллер устройства с подключенными устройствами.
Подпрограммы прерываний служб (ISR) обрабатывают прерывания для драйверов физического устройства, получающего прерывания.
Прерывания с сигналом сообщения активируют прерывание путем записи значения в определенный адрес памяти.
Отложенные вызовы процедур (объекты DPC) могут быть помещены в очередь из isR и выполняются позже и в более низком irQL, чем ISR.
самонастраивающийся (PnP) Фокусируется на поддержке системного программного обеспечения для PnP и способах использования драйверов, которые поддерживают реализацию PnP.
Управление питанием описывает архитектуру, которая обеспечивает комплексный подход к управлению питанием системы и устройств.
Инструментарий управления Windows (WMI) — это расширения для драйвера режима ядра, что позволяет драйверу стать поставщиком WMI. Поставщик WMI делает данные измерения и инструментирования доступными для потребителей WMI, таких как приложения в пользовательском режиме.
Драйверы программирования драйверов в режиме ядра Windows требуют методов, которые иногда значительно отличаются от обычных программ в пользовательском режиме.