Лабораторная работа №1
1 - панель DriverStudio
2 - активный проект в случае, когда рабочая область (workspace) содержит несколько проектов. В приведенном случае имя активного проектаIKEservice, и видны еще 2 неактивных проектаjpeglib иliblber.
3 - окно рабочей области ("Диспетчер проектов")
4 - тип просмотра рабочей области (просмотр классов, просмотр ресурсов или просмотр файлов)
Для всех л/р будет использован мастер создания драйверов из пакета NuMega Driver Studio.
Последовательность работы с мастером:
Запустить мастер (это можно сделать из системного меню Start\Programs\NuMega DriverStudio\DriverWorks\Driver Wizard).
В окне мастера указать рабочую директорию и имя проекта, нажать кнопку Next
В следующем окне мастера выбрать тип драйвера NT 4.0
Жать “Next”, пока эта кнопка доступна
В последнем окне мастера убрать пункт создания тестового приложения и нажать кнопку Finish
Из созданного проекта удалить все файлы “.cpp” и “.h”, после чего удалить их с диска
Все вновь создаваемые файлы должны иметь расширения “.c” и “.h”
При наличии в рабочей области нескольких проектов сделать необходимый проект активным, для чего щелкнуть по его имени в диспетчере проектов правой кнопкой мыши и в появившемся меню выбрать пункт “Set as active project”
Выбрать пункт меню “Project\Settings” (Быстрые клавиши Alt+F7). Возникнет окно настроек активного проекта. В списке проектов выбрать необходимый, переключиться на закладку настроек компоновщика “Link”. Для категории настроек “General” в поле редактирования “Object/library modules” удалить все, относящееся к файлу vdw.lib. Сделать так для настроек рабочей и отладочной версии проекта (Выпадающий список Settings For: Win32 Free / Win32 Checked). Нажать кнопку Ok
Указать все необходимые для DriverStudio переменные окружения. Для этого выбрать либо кнопку “Change Environment Variable” из панели DriverStudio, или пункт меню “DriverStudio\Driver Build Settings…”. В появившемся окне должны быть указаны все пункты.
Для создания драйвера сделать соответствующий проект активным и выбрать меню “Build\Build drvname.sys”, гдеdrvname – имя активного проекта.
Драйвер №1
Минимальный драйвер
Создать проект с именем simple1
Имя единственного файла в проекте – simple1.c
Описание файла simple1.C:
1) Подключить заголовочный файл ntddk.h – основной заголовочный файл для написания драйверов NT
2) Создать функцию – точку входа в драйвер “DriverEntry” (см. лекция №5)
Прототип DriverEntry:
NTSTATUS DriverEntry( IN PDRIVER_OBJECT DriverObject,
IN PUNICODE_STRING RegistryPath);
где DriverObject – указатель на объект-драйвер, соответствующий загружаемому драйверу
RegistryPath – указатель на строку в формате Unicode с именем ключа реестра, соответствующего загружаемому драйверу.
Возвращаемое значение имеет тип NTSTATUS. Если возвращается успешный статус завершения, диспетчер в/в немедленно позволяет производить обработку запросов к объектам-устройствам, созданным драйвером. Во всех остальных случаях драйвер не загружается в память и запросы к нему не передаются.
В нашем случае в теле функции должен быть единственный оператор return, возвращающий успешный статус завершения:
return STATUS_SUCCESS;