Что такое драйвер ядра Windows? - PullRequest
4 голосов
/ 15 мая 2011

Что такое драйвер ядра Windows, написанный с помощью WDK?

Чем отличается обычное приложение или сервис?

Ответы [ 3 ]

11 голосов
/ 15 мая 2011

Драйверы ядра - это программы, написанные для собственного API Windows NT (а не для API подсистемы Win32) и выполняющиеся в режиме ядра на базовом оборудовании.Это означает, что драйвер должен иметь возможность справляться с переключением контекстов виртуальной памяти между процессами и должен быть написан так, чтобы быть невероятно стабильным - поскольку драйверы ядра работают в режиме ядра, в случае сбоя он отключает всю систему.Драйверы ядра не подходят ни для чего, кроме аппаратных устройств, потому что для установки или запуска им требуется административный доступ, а также потому, что они снимают безопасность, которую ядро ​​обычно обеспечивает сбоям программ, а именно, то, что они рушат себя, а не всю систему.

Короче говоря:

  • Драйверы используют собственный API, а не Win32 API
    • Это означает, что драйверы обычно не могут отображать какой-либо пользовательский интерфейс.
  • Драйверы должны управлять памятью и тем, как память выгружается явно, используя такие вещи, как выгружаемый пул и невыгружаемый пул.
  • Драйверы должны иметь дело с переключением контекста процесса и не зависят от того, какой процесс имееттаблица страниц, пока они работают.
  • Драйверы не могут быть установлены в ядро ​​ограниченными пользователями.
  • Драйверы работают с привилегированными правами на уровне процессора.
  • Ошибка впрограмма уровня пользователя приводит к завершению процесса этой программы.Ошибка в драйвере сбивает систему с «голубого экрана смерти».
  • Драйверы должны иметь дело с аппаратными битами низкого уровня, такими как прерывания и уровни запросов прерываний (IRQL).
2 голосов
/ 15 мая 2011

Это код, который работает в режиме ядра, а не в режиме пользователя.Код режима ядра имеет прямой доступ к внутренним компонентам ОС, аппаратному обеспечению и т. Д.

Неизменно вы пишете модули режима ядра для реализации драйверов устройств .

0 голосов
/ 15 мая 2011

Драйвер ядра является низкоуровневой реализацией "приложения".
Поскольку он работает в контексте ядра, он имеет возможность прямого доступа к API ядра и памяти.

Например, драйвер ядра должен использоваться для:

  • Контроль доступа к файлам (защита паролем, скрытие)
  • Разрешить доступ к нестандартным файловым системам (например,ext, reiserfs, zfs и т. д.) и устройства
  • True API-хуки
  • ... и по многим другим причинам

Если вы хотите получитьузнать больше, вы можете искать по ключевому слову "ring0" с вашей любимой поисковой системой.

...