Большинство драйверов написаны на C или C ++, поэтому, если вы недостаточно хорошо знаете эти языки, вам следует ознакомиться с ними перед началом работы.Программирование Windows использует много интересных комбинаций клавиш, которые могут сбить с толку новичка - например, PVOIDs (typedef void* PVOID
) и LPVOIDs (typedef void* far LPVOD;
).Вы должны быть довольны указателями как концепциями, так и структурами, потому что вы будете использовать их много.Я бы посоветовал написать действительно простое приложение для win32 в качестве упражнения, чтобы овладеть стилем Windows C / C ++.
Тогда вам следует перейти к Windows Driver Kit - в частности, он понадобится вам для сборки драйверов для Windows.На этом этапе моя способность консультировать действительно зависит от того, что вы делаете, от того, какое у вас есть оборудование и т. Д., А также от того, действительно ли вы используете оборудование.Вам нужно будет знать, как управлять вашим оборудованием, и оттуда вам нужно будет выбрать подходящий способ написания драйвера - есть несколько различных типов драйверов в зависимости от того, что вам нужно для достижения, и это может быть, вы можете подключить кодин из них.
Комплект драйверов для Windows содержит довольно большое количество примеров, включая драйвер, который реализует виртуальный тостер.Это должно дать вам отправную точку.
Я настоятельно рекомендую вам протестировать это на виртуальной машине.Если ваш драйвер успешно собирается, но вызывает ошибку во время выполнения, результат вполне может привести к сбою окон полностью, если вы находитесь в режиме ядра.Поэтому вы избавите себя от некоторой боли, имея возможность вернуть виртуальную машину, если вы ее повредите, а также не нужно ждать перезагрузки системы.Это также упростит отладку, так как могут использоваться виртуальные последовательные кабели.
Это довольно сложное мероприятие, поэтому перед началом я бы более тщательно изучил разработку Windows - проверьте, что вы не можетесначала сделайте это с помощью API-интерфейсов Windows, затем посмотрите на структуру драйвера пользовательского режима, а затем, наконец, и только если вам нужно, посмотрите на материал уровня ядра.