С и C++. Интегрированная среда разработки.
Необходимо особо отметить, что драйверы предполагается писать на С, а не на C++. Microsoft не поддерживает использование C++ для компонентов ядра. Для этого имеется ряд причин:
- отсутствие библиотеки времени исполнения (runtime library), а, следовательно, и определяемых в ней глобальных операторов new и delete4;
- отсутствие поддержки исключительных ситуаций C++;
- нет поддержки инициализации глобальных экземпляров классов.
В принципе, все эти проблемы разрешимы. Не будем останавливаться на описании конкретных способов. Об этом вы можете узнать в статье "C++ Runtime Support for the NT DDK", а также из анализа заголовочных файлов в продукте DriverWorks (в особенности файла vdw.h).
Как было сказано выше, интегрированная среда Developer Studio не имеет поддержки для создания драйверов. Драйверы компилируются из командной строки с использованием утилиты BUILD, поставляемой в составе DDK.
Реализовать поддержку драйверов из интегрированной среды можно несколькими способами:
- реализацией собственного АррWizard (см. АррWizard Programming Reference);
- созданием проекта на основе make-файла с вызовом собственного командного файла.
Этот файл должен:
- произвести настройку переменных окружения с помощью вызова setenv.bat из DDK;
- перейти в директорию с исходным текстом и вызвать утилиту build (см. также статью "Integrating BUILD and Developer Studio" в директории NT Insider).
Реализация собственного Арр Wizard – довольно непростая задача, однако, можно воспользоваться готовым из DriverWorks. Последовательность действий такая: выберите меню Developer Studio File\New…. В появившемся окне на закладке Projects выберите NT/WDM Driver (DriverWorks).
В появившемся окне Мастера укажите тип драйвера NT и следуйте инструкциям, внося минимальные изменения. По завершении работы мастера удалите все созданные им срр- и h-файлы, и вставьте собственные с – и h-файлы.