Вам понадобится
  • - 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
Реализуйте функционал драйвера. Добавьте код в функции, созданные на предыдущем шаге. Добавьте логику обработки запросов ввода-вывода, и т.д.