С и 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-файлы.