Самым первым шагом является загрузка WDK от Microsoft.
WDK содержит множество примеров драйверов и обширную документацию по API ядра.Кроме того, среда сборки и компилятор для использования с драйверами.
При этом вы можете выбрать, какую модель драйвера использовать, какой API следовать ... и т.д.
Отличный источник информации оИнтернет osronline со множеством статей и сообществом, где можно найти ответы на конкретные вопросы о разработке драйверов под Windows.
На конкретный вопрос, какими должны быть ваши базовые знания.
- Свободное знание C
- Использование систем сборки (makefile)
- Многопоточность мьютекс / спин-блокировка / параллелизм
- Общее знание принципов ОС (например, разницамежду виртуальной / физической памятью, подкачкой, очередями сообщений ...)
- Конкретные знания области, в которую вы хотите углубиться.(Например, интерфейс регистрации для USB-устройств / знания о файловых системах / и т. Д.)
(Не столько о самом оборудовании, потому что в большинстве случаев Windows скрывает от вас низкоуровневые сведения об оборудовании)