Здравствуйте, Fredwriter, Вы писали:
F>Здравствуйте, расскажите пожалуйста об утилите Build из пакета DDK, я пишу драйвер и не могу понять что она должна сделать. Если DDK установлен корректно, то нужно сделать так: Пуск -> Все программы -> Development Kits -> Windows DDK 2600 -> Build Environments -> или WinXP Free Build Environment или WinXP Checked Build Environment. Если есть MakeFile, то нужно перейти в рабочую директорию командой cd и написать заветное слово Build, запустится утилита Build.exe c установленными переменными окружения и произойдет КОМПИЛЯЦИЯ(сборка) файла драйвера. Вот такие пироги.
F>Вопрос у меня следующий: (первый раз пользуюсь этой утилитой и не было еще опыта успешного её использования) что должно произойти после использования этой утилиты? У меня только появился файл buildfre.log с одной строчкой:
F> BUILD: Computing Include file dependencies:.
F>Я думал, что должен был появится какие-то файлы Sys или еще что нибудь. Подскажите пожалуйста.
Значит, так.
В корне проекта должно быть два файла — makefile и sources.
Еще бывают файлы dirs, но мы их пока рассматривать не будем.
Файл makefile очень простой и всегда одинаковый:
!include $(NTMAKEENV)\Makefile.def
Вот и все содержимое.
В файле sources определяются исходники драйвера (файлы .c).
Плюс некоторые опции сборки (подробно это все расписано в WDK).
Например, один из моих файлов sources имеет такое содержание:
TARGETNAME=mock_tdi
TARGETTYPE=DRIVER
RCOPTIONS=$(RCOPTIONS) /d$(HAUBERK_OS_ID)
SOURCES=\
DriverEntry.c \
DispatchCreate.c \
DispatchDeviceControl.c \
DispatchInternalDeviceControl.c \
DispatchCleanup.c \
DispatchClose.c \
CompleteRequest.c \
IRP.c \
CancelSafeQueue.c
Сборка драйвера очень проста — нужно открыть build prompt для целевой системы (например,
WDK/Build Environment/Windows Server 2003/x64 Free Build Environment), затем зайти в
папку проекта и выполнить команду build (возможно, с дополнительными флагами).
После этого, если сборка пройдет успешно, в подпапке с именем типа objfre_wnet_amd64
появятся файлы .sys и .pdb и другие.
Более сложные сценарии включают использование inf-файлов и генерацию/подпись каталогов,
но это отдельная тема.