1. Среды сборки.
Для компилирования драйвера с помощью набора DDK используются “среды сборки” (build environment). Их можно найти в Пуск->Все программы->Development Kits->Windows DDK 2600->Build Environments->
(пример приведен для DDK XP, другие версии могут иметь другие названия пунктов).
Среды сборки представляют из себя консольные окна, в точности повторяющие командную строку Windows и использующее некоторые ее команды ( cd, exit ).
Существует два типа сред сборки:
checked – для создания отладочных версий.
free – для создания конечных версий.
Первый тип позволяет использовать в коде драйвера функции, выводящие отладочную печать. Рекомендуется использовать этот тип на начальном этапе разработки драйвера. Этот тип среды сборки осуществляет проверки некоторых ошибок, поэтому скомпилированный драйвер может работать без сбоев даже при наличии ошибок. Поэтому рекомендуется периодически проводить компиляцию и вторым типом среды разработки.
В некоторых комплектах DDK содержатся среды сборки сразу для нескольких версий Windows, а также для различных архитектур (32 / 64-битные).
Более подробную информацию о средах разработки можно найти в DDK Documentation:
Windows DDK->Driver Development Tools->The Checked Build of Windows.
2. Переход в требуемую папку.
Для перехода в другую папку используется команда cd, аналогичная используемой в командной строке Windows. Аргументом команды является путь к папке относительно текущего каталога. Для обозначения каталога, содержащего текущий каталог (т.е. родительского) используется “..” (две точки).
Например:
Команда “CD Folder” перейдет в подкаталог Folder текущего каталога
Команда “CD ..” перейдет в родительский каталог текущего каталога
Команда “CD ..\Sibling” перейдет в “соседний” каталог (т.е. расположенный в родительском каталоге для текущего).
Папка в которой находятся файлы с исходным кодом драйвера также должна содержать два файла: makefile и sources.
Makefile является стандартным, и модифицировать его не рекомендуется. Он ссылается на другой файл makefile.def, находящийся в одной из директорий DDK и содержащий настройки для сборки драйверов.
Пример файла makefile:
# # DO NOT EDIT THIS FILE!!! Edit .\sources. if you want to add a new source # file to this component. This file merely indirects to the real make file # that is shared by all the driver components of the Windows NT DDK #
!INCLUDE $(NTMAKEENV)\makefile.def |
Source файл служит для указания компилируемых файлов и для задания некоторых настроек.
Пример файла source:
# Имя файла драйвера без расширения TARGETNAME=Mydriver
# Путь к файлу драйвера из текущей директории # допускается использование специальных макросов, например $(BASEDIR), # по умолчанию указывает на корневую директорию DDK TARGETPATH=Path
# Тип выходного файл: драйвер TARGETTYPE=DRIVER
# Список дополнительных библиотек # разделитель – “ ” (пробел), переход на новую строку - "\" (обратный слеш) TARGETLIBS=Library1.lib Library2.lib> \ Library3.lib
# Список имен компилируемых файлов # разделитель - " ", переход на новую строку - "\" SOURCES=File1. c File2.c \ File3.c |
Символ “#” используется для комментирования.
Фактически файл задает значения некоторым переменным. Следует отметить, что между именем переменной и знаком равно не следует ставить пробел.
Основные требуемые имена переменных и их смысл указаны в примере.
Приведенных примеров файлов достаточно для компилирования Legacy драйвера режима ядра (состоящего из 3-х исходных файлов и включающего три библиотеки). (Для драйвера WDM, к примеру, требуется явное указание типа).
Следует упомянуть о возможности использования еще одного типа файлов – dirs.
Данные файлы служат для указания своих подкаталогов, в которых нужно произвести компиляцию. Таким образом, можно запускать компиляцию в директории с файлом dirs, при этом последовательно будет произведен поиск dirs-файлов во всех подкаталогах и т.д. до обнаружения source-файлов, которые укажут файлы, требующие компиляции.
Пример dir-файла
DIRS=SubFolder1 SubFolder2 \ SubFolder3 |
Полную информацию о средах сборки можно найти в DDK Documentation:
Widows DDK->Driver Developments Tools->The Build Utility.
