Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ДП.docx
Скачиваний:
11
Добавлен:
23.09.2019
Размер:
4.64 Mб
Скачать

1.2 Обоснование выбора программно-аппаратных средств

В качестве программных средств разработки заданием на дипломный проект была определена система программирования Microsoft Visual Studio 2010.

Microsoft Visual Studio — линейка продуктов компании Майкрософт, включающих интегрированную среду разработки программного обеспечения и ряд других инструментальных средств. Данный продукт позволяет разрабатывать как консольные приложения, так и приложения с графическим интерфейсом, в том числе с поддержкой технологии Windows Forms, а также веб-сайты, веб-приложения, веб-службы как в родном, так и в управляемом кодах для всех платформ, поддерживаемых Microsoft Windows, Windows Mobile, Windows CE,.NET Framework, .NET Compact Framework и Microsoft Silverlight [1.2].

Visual Studio включает в себя редактор исходного кода с поддержкой технологии IntelliSense и возможностью простейшего рефакторинга кода. Встроенный отладчик может работать как отладчик уровня исходного кода, так и как отладчик машинного уровня. Остальные встраиваемые инструменты включают в себя редактор форм для упрощения создания графического интерфейса приложения, веб-редактор, дизайнер классов и дизайнер схемы базы данных. Visual Studio позволяет создавать и подключать сторонние дополнения (плагины) для расширения функциональности практически на каждом уровне, включая добавление поддержки систем контроля версий исходного кода (как например, Subversion и Visual SourceSafe), добавление новых наборов инструментов (например, для редактирования и визуального проектирования кода на предметно-ориентированных языках программирования или инструментов для прочих аспектов цикла разработки программного обеспечения (например, клиент Team Explorer для работы с Team Foundation Server) [1.2].

В качестве основного средства разработки драйверов, без которого не обойтись ни одному разработчику, был выбран Microsoft DDK (от англ. Driver Development Kit) — набор из средств разработки, заголовочных файлов, библиотек, утилит, программного кода примеров и документации, который позволяет программистам создавать драйверы для устройств по определённой технологии или для определённой платформы (программной или программно-аппаратной). Название произошло от более общего термина SDK (англ. Software Development Kit), которым обозначают комплекты для разработки программ вообще, не только драйверов [1.4].

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

В «экосистеме», связанной с операционной системой Windows, термин устарел, и заменён термином WDK — Windows Driver Kit. Продукт доступен для бесплатной загрузки через сайт Microsoft и содержит в себе средства построения программ как режима ядра, так и пользовательского режима.

Помимо DDK и IDE Microsoft Visual Studio 2010 при разработке драйверов под Windows очень полезными и порой необходимыми являются следующие утилиты и программы.

WinDriver − программное обеспечение для быстрого создания высокопроизводительных, высококачественных драйверов устройств для работы в пользовательском режиме. WinDriver значительно облегчает и сокращает цикл разработки драйвера, разработка в режиме пользователя. Позволяет производить выполнение в режиме ядра, при этом не требуется знаний внутренней структуры операционной системы или ядра. Обладает оптимальной производительностью, высокой надежностью [1.2].

DevCon − это программа с интерфейсом командной строки, которая используется в качестве альтернативы диспетчеру устройств С ее помощью можно включать, выключать, перезапускать, обновлять, удалять и опрашивать отдельные устройства или группы устройств. Программа DevCon также предоставляет необходимые разработчику драйвера сведения, которые недоступны с помощью диспетчера устройств [1.2].

Ограничений на свободное распространение программы DevCon нет. Она предназначена для использования в качестве средства отладки и разработки. В состав программы включен пример совместного применения функций SetupAPI и CfgMgr32 для перечисления устройств и выполнения над ними определенных действий. 

DeviceTree − выполняет построение дерева устройств с двух точек зрения: с точки зрения принадлежности объектов устройств драйверам и с точки зрения взаимной подчиненности объектов устройств при выполнении операции перечисления устройств. Программа позволяет отслеживать подчиненность объектов устройств в локальных стеках драйверов, их принадлежность драйверам, выявлять существующие фильтр-драйверы, устанавливать (выяснять) коды IRP пакетов, обслуживание которых объявил драйвер, и некоторую другую специфическую информацию [1.2].

Консольное приложение DevCtl проводит тестирование драйвера путем применения к нему наиболее употребительных вызовов ввода/вывода пользовательского режима, например NtCreateFile или DeviceIoControl.

B процессе тестирования могут быть выявлены серьезные упущения в программировании драйвера, например, некорректная обработка неожиданных (для тестируемого драйвера) IOCTL запросов или запрос на получение данных, когда приложение указало заведомо малый размер буфера для получаемых данных [1.2].

Программа DriverVerifier проверяет драйвер на правильность выполнения следующих тестов [1.2]:

  • Операции с пулами памяти;

  • Корректность уровней IRQL, на которых выполняется код драйвера;

  • Обнаружение взаимоблокировок;

  • Выполнение DMA операций;

  • Стресс-тест (нехватка ресурсов) ;

  • Нетипичные запросы к драйверу.

Программа GuidGen (UUIDGEN — ее консольная версия) выполняет генерацию 128 разрядного уникального ключа (GUID — глобально уникальный идентификатор), который может использоваться для регистрации интерфейса драйвера, в процессе инсталляции и т.п. Вероятность повторения данного значения весьма и весьма низка (хотя и не равна нулю), так что программа GuidGen является типовым инструментом для этих целей. Программа встречается во всех пакетах Microsoft [1.2].

Как показано на рисунке 1.4, программа создала GUID в формате, удобном для включения в текст на языке С. Нажав на кнопку "Сору" можно перенести его текст в буфер обмена и вставить в нужное место в тексте программы или драйвера.

Значения GUID можно встретить и в программах, работающих по технологии СОМ, и в Системном Реестре, где они часто используются как идентификаторы классов устройств или входят в состав имен параметров, описывающих устройства.

Рисунок 1.4 – Интерфейс программы GUIDGEN

Программа PreFast предназначена для выявления ошибочных паттернов (шаблонов) программного кода на уровне исходного текста. Она запускается в качестве наблюдателя за процессом сборки или компиляции какого-либо программного кода и по завершении этого процесса сообщает о дополнительно замеченных ошибочных фрагментах кода (в случае ошибки собственно сборки или собственно компиляции программа PreFast в работу не вступает) [1.4].