Самоучитель по программированию систем защиты

       

С и C++. Интегрированная среда разработки



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

     



    Содержание раздела