Як написати драйвера


 

Уніфікована робота з усіма пристроями персонального комп’ютера в Windows, а також деякі інші функції операційної системи забезпечуються набором драйверів. Для того щоб написати драйвера, потрібно добре розбиратися в програмуванні, принципах функціонування ядра і різних підсистем Windows.



Вам знадобиться

— Windows Driver Development Kit.

Інструкція

  1. Завантажте дистрибутив Windows Driver Development Kit (DDK) з сайту microsoft.com (доступний для передплатників MSDN) і встановіть його на комп’ютер. Даний пакет містить всі необхідні кошти для розробки і збірки драйверів (компілятор, лінкер, заголовні файли, бібліотеки), а також вичерпну документацію.
  2. Детально вивчіть всю доступну документацію з написання драйверів під Windows. Використовуйте довідкову інформацію з пакета DDK і відповідного розділу MSDN (msdn.microsoft.com). Ви повинні повністю зрозуміти всі аспекти моделі драйверів Windows (WDM), засвоїти основні архітектурні концепції. Необхідно чітко розуміти різницю між драйверами, що працюють в режимі користувача і в режимі ядра, драйверами пристроїв і файлових систем. Потрібно знати особливості різних класів драйверів, їх типів (драйвери шин, фільтрів, функціональні драйвери) і підтипів (драйвери дисплеїв, модемів, мережевих пристроїв, паралельних і послідовних портів, пристроїв зберігання інформації). Особливу увагу приділіть принципам пакетно-керованого введення-виведення (Packet-Driven I / O) з повторно-використовуваними пакетами запитів (Reusable IRPs), управлінню пам’яттю, обробці виключень і правильному застосуванню об’єктів синхронізації.
  3. Чітко визначте функціонал розробляється драйвера. На основі цього визначте, до якого типу і класу він належить.
  4. Виберіть мову програмування. Традиційно драйвери, що працюють в режимі ядра, реалізуються на C. Драйвери користувальницького режиму зазвичай розробляють на C + +. З цих правил є кілька винятків. Так, на C + + пишуться клієнтські мінідрайвери аудіо та відео потоків, WDM аудіо драйвери мініпорт режиму ядра, WIA драйвери, іноді драйвери дисплея.
  5. Створіть проект, який реалізує заготовку драйвера. Дослідіть каталог DDK з прикладами. Підберіть демонстраційний проект драйвера потрібного типу. Якщо підходящого прикладу не знайшлося, самостійно створіть файли, що містять потрібний вихідний код, а також файли сценаріїв збірки. Наприклад, при розробці драйвера режиму ядра потрібно реалізувати функцію DriverEntry, що містить код ініціалізації, а також деякі стандартні процедури (такі як AddDevice, StartIo, і т.д.).
  6. Реалізуйте функціонал драйвера. Додайте код в функції, створені на попередньому кроці. Додайте логіку обробки запитів вводу-виводу, і т.д.