1. Теоретичні відомості
.1 Розробка драйверів ядра Windows
Короткі теоретичні відомості
Розробка драйверів ядра
Драйвер (від англ. driver) - це комп'ютерна програма, за допомогою якої інша програма (зазвичай, операційна система) отримує доступ до апаратного забезпечення стандартним чином.
Схематично, щоб показати, як працюють різні типи драйверів:
В
Зручно розділити на 2 типи:
Драйвери ядра (працюють на 0 рівні привілеїв, але ніяк не взаємодіють ні з програмою користувача, ні з пристроєм. Саме з них ми і почнемо (вони простіше і теж можуть принести користь).
Драйвери пристроїв - необхідні, щоб здійснювати взаємодію між програмою користувача і пристроєм, а саме, передавати дані між ними, управляти пристроєм. Причому, пристрої можуть бути як реальними, так і віртуальними). Драйвер не обов'язково повинен управляти яким-небудь фізичним пристроєм. Деякі ОС дають можливість створювати також драйвери віртуальних пристроїв - об'єктів, які поводяться аналогічно пристроям в/вив, але не відповідають ніякому фізичному пристрою. p align="justify"> Компоненти ядра виконуються в привілейованому режимі процесора (званому режимом ядра), можуть виконувати всі, а саме:
вони можуть виконувати привілейовані команди процесора (наприклад, lgdt),
можуть мати доступ до системних даними і коду,
мають прямий доступ до устаткування, наприклад, через порти
мають доступ до комірок пам'яті; драйвер не може маніпулювати фізичної пам'яттю безпосередньо, однак може отримати віртуальний адресу для будь-якого фізичного та маніпулювати ним.
Якщо потрібно написати скільки-небудь серйозне додаток, для роботи якого необхідний доступ до внутрішніх функцій або структурам даних системи, то можна зіткнутися з безліччю обмежень, подолати які можна тільки розмістивши свій код в системному адресному просторі. З документованих існує тільки один спосіб це зробити - встановити драйвер. Спосіб цей відносно простий, надійний, а головне, повністю забезпечений підтримкою з боку самої операційної системи. p align="justify"> Код ядра (власне це і є сама система) розглядається як повністю довірчий. Тому, будучи завантаженим в системне адресний простір, драйвер стає частиною системи і на нього не накладаються які-небудь обмеження. У Windows - це практично єдиний спосіб не розробникам ОС писати системні компоненти рівня ядра. p align="justify"> Для написання та вивчення способів розробки драйверів застосовують DDK (Device Development Kit) - систему для розробки драйверів.
Крім документації в DDK входить набір включення файл (*. inc) і бібліотечних ф...