[Previous] [Next]

Программные средства из пакетов разработки драйверов от третьих фирм

В настоящее время две фирмы, Jungo Ltd. и CompuWare Corp., предлагают собственные коммерческие пакеты проектирования драйверов.

Фирма Jungo Ltd. предлагает разработчикам пакет WinDriver, позволяющий быстро создавать драйверы пользовательского режима (практически — динамические библиотеки), и пакет KernelDriver для создания кода, работающего в режиме ядра (что более эффективно в смысле производительности драйвера). Оба пакета имеют удобные заготовки для программирования устройств, подключаемых к шинам PCI, USB, ISA, и позволяют работать с ними программистам на Delphi и Basic. Однако собственный базис функций представляет собой почти что новый язык программирования (в той степени, как это можно сказать, например, о наборе функций MFC для программиста, ранее работавшего только с API функциями Windows). Кроме того, для уверенной работы с данными пакетами крайне необходима постоянная лицензионная поддержка.

Пакет Numega Driver Studio (от CompuWare Corp.) содержит в своем составе мощный отладчик SoftIce, ориентированный исключительно на платформу Intel. Отладчик SoftIce позволяет проводить отладку на одном компьютере (хотя опытные разработчики в категоричной форме рекомендуют не проводить отладку драйвера на компьютере с ценными данными и там, где установлены все программные средства разработки — время, потраченное на восстановление системы квалифицированным специалистом, зачастую стоит дороже дополнительного компьютера). И хотя интерфейс с пользователем остается практически неизменным со времен MS DOS, отладчик SoftIce обладает мощными возможностями, по функциональности вряд ли уступающими возможностям отладчиков Visual Studio для пользовательского режима.

Несколько полезных программных средств от CompuWare Corporation рассматриваются ниже.

Программа Monitor от CompuWare Corporation

Программа Monitor от Numega (теперь CompuWare Corporation) позволяет динамически загружать, запускать, останавливать и выгружать драйверы, выполненные в-стиле-NT (не-WDM), в большинстве случаев без перезапуска системы и без создания собственной программы загрузки драйвера при помощи SCM сервисов, а также без использования inf файлов и системного Менеджера Устройств. Таким образом, достаточно подготовить лишь .sys файл и затем воспользоваться программой Monitor.

Вообще говоря, имеются и иные программы с данным сервисом, однако Monitor от CompuWare Corporation имеет наиболее завершенный вид (младшие версии работали еще с VxD драйверами) и удобный графический интерфейс.

Первые четыре кнопки в панели инструментов, см. рисунок 2.10, посвящены загрузке (внесению записи о драйвере в Системный Реестр), запуску, останову, выгрузке драйвера и удалению записи о драйвере из Системного Реестра, соответственно. По мере выполнения этих действий в окне появляются диагностические сообщения о надлежащем выполнении операции или сообщения об ошибках.

Недостаточно последовательно выполненные драйверы (имеющие в своем составе рабочие функции или вызовы системных функций, характерные для драйверов модели WDM) могут не полностью обслуживаться данной программой (например, загружаются и запускаются, но не могут быть остановлены). Данное программное средство удобно для проведения коротких тестов с несложными драйверами (как, например, драйвер Example.sys, подробно рассматриваемый в следующей главе).

Рис. 2.10
Программа Monitor

Программа трансляции файла sources в проект Visual Studio

В составе пакета Driver Studio имеется утилита, которая выполняет достаточно корректное создание файла описания проекта Visual Studio (.dsp, файла описания проекта для Microsoft Visual Studio 6).

Для программы SrcToDsp (рисунок 2.11) требуется в качестве входной информации файл sources, управляющий обычно сборкой драйвера утилитой Build в пакете DDK. Среда программирование Microsoft Visual Studio 7 Net также способна воспринимать .dsp файлы, однако при первой загрузке проекта она предпочитает перевести их в формат .vcproj (текстовый XML формат, вполне читаемый и похожий на HTML).

Следует, тем не менее, критически относиться к результатам работы этой программы и не принимать все на веру, тщательно проверяя настройки проекта в Visual Studio. Кроме того, следует помнить, что чистовую сборку драйвера следует выполнять средствами пакета DDK (в котором настройки компиляции и сборки можно считать эталоном).

Рис.2.11
Программа SrcToDsp

Программа Numega SymLinks

В составе пакета Driver Studio имеется утилита, которая позволяет просматривать все символьные ссылки, созданные реально функционирующими на данный момент драйверами.

На рисунке 2.12 показаны некоторые из символьных ссылок, имеющихся в системе. В частности, в двух первых строчках указаны символьные имена HCD0 и HCD1, соответствующие функциональным объектам устройств (с именами USBFDO-0 и USBFDO-1), которые обслуживаются драйвером USB контроллера. То есть в системе физически присутствуют два USB контроллера, к которым их клиенты могут обращаться с вызовом пользовательского режима CreateFiIe("\\\\.\\HCD0",...) или вызовом режима ядра ZwCreateFile (внутри параметров которого передается это же имя, правда, ритуал такой передачи несколько сложнее).

Рис.2.12
Программа SymLinks

Следует отметить, что программа SymLinks существенно лаконичнее программ WinObj и DevView, которые будут рассмотрены ниже.