48424 (Протоколирование обмена информацией между компьютером и внешним запоминающим USB-устройством), страница 5

2016-07-30СтудИзба

Описание файла

Документ из архива "Протоколирование обмена информацией между компьютером и внешним запоминающим USB-устройством", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.

Онлайн просмотр документа "48424"

Текст 5 страницы из документа "48424"

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\driver_name.

Последняя часть имени специфична для устанавливаемого драйвера. Создаваемый ключ должен содержать следующие параметры:

  • DisplayName – значение этого параметра описывает текст, используемый в служебных программах;

  • ErrorControl – этот параметр предписывает операционной системе способ поведения в той ситуации, когда при загрузке драйвера произошла ошибка;

  • ImagePath – описывает полный путь к файлу с исполняемым кодом драйвера;

  • Start – описывает стадию загрузки операционной системы, когда следует загружать драйвер;

  • Type – определяет тип драйвера.

Возможные значения указанных параметров можно узнать из документации MSDN.

Таким образом, первая стадия установки драйвера в систему заключается
в том, что должен быть создан ключ драйвера в реестре, а сам драйвер
скопирован в каталог, описываемый строкой ImagePath (как правило -%SystemRoot%\System32\Drivers\driver_name.sys).

Далее должно быть выбрано устройство, на которое будет установлен фильтр. Выбранному устройству в системном реестре соответствует ключ с именем вида HKLM\CurrentControlSet\Enum\USB\XXX\YYY.

Последняя часть ключа (XXX\YYY) определяется именем устройства. При установке драйвера фильтра нижнего уровня в разделе YYY создается строковый параметр LowerFilters, которому присваивается значение, совпадающее с именем драйвера, для которого был создан ключ в …\Services. Таким образом, при подключении устройства к системе для него будет создан стек драйверов, в состав которого в качестве фильтра нижнего уровня будет загружен устанавливаемый драйвер.

Кроме того, в ключе, связанном с устройством, при установке драйвера создается дополнительный раздел MyFilterParams, который хранит два параметра:

  • MaxLogSize – максимальный размер лог-файла;

  • LogFileName – имя лог-файла.



3. Технологический раздел


3.1 Выбор языка и средств программирования

Разрабатываемый программный комплекс состоит из двух частей:

  • Драйвера-фильтра;

  • Управляющего приложения для установки фильтра и ввода параметров протоколирования.

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


3.1.1 Драйвер-фильтр

От разрабатываемого драйвера-фильтра требуется высокая скорость работы и надежность. При его работе осуществляется множество манипуляций с памятью, операций с указателями, преобразований типов. Важно представлять структуру скомпилированного продукта, чтобы правильно представить себе логику его работы. Среди языков программирования, удовлетворяющих этим требованиям, известны языки С и ассемблер. Для написания драйвера предпочтение было отдано языку C. Такой выбор был сделан по следующим причинам:

  • Существует специальный компилятор C, поставляемый в составе пакета DDK, предназначенный специально для компиляции драйверов. Он содержит множество макроопределений и библиотек, позволяющих сделать процесс написания драйвера более легким. Microsoft рекомендует его как основную среду для разработки драйверов для Windows;

  • Программы на ассемблере работают быстрее, чем программы, написанные на C. Но разница в скорости между этими языками не очень велика. Зато производительность труда при использовании C намного выше, чем при использовании ассемблера.


3.1.2 Управляющее приложение

Управляющее приложение было создано в среде разработки Borland C++ Builder, поскольку эта среда программирования предоставляет широкие возможности по созданию пользовательского интерфейса и ускоряет процесс разработки программных продуктов. Данная среда программирования содержит множество стандартных элементов оконного пользовательского интерфейса, использование которых позволило сделать управляющее приложение простым и понятным для пользователя. Для рассматриваемого приложения скорость работы и объем исполняемого файла не являются критичными факторами, поэтому выбор среды Borland C++ Builder можно считать вполне обоснованным.


3.2 Структуры данных драйвера-фильтра

Для сбора информации о вводе / выводе устройства используется структура BUFFER, объявленная в драйвере следующим образом:

typedef struct _BUFFER

{

PVOID Buffer;

PMDL Mdl;

ULONG MaxSize;

ULONG CurrentSize;

} BUFFER, *PBUFFER;

Поясним значения полей структуры:

  • Buffer – указатель на буфер, хранящий информацию;

  • Mdl – указатель на MDL‑список, хранящий отображение буфера на системные страницы в памяти;

  • MaxSize – максимальный размер буфера в байтах;

  • CurrentSize – текущий размер буфера в байтах.

В программировании считается дурным тоном создание переменных, глобальных для всего кода. В драйверах рекомендуется размещать эти глобальные переменные в структуре расширения устройства. Создание этой структуры, конечный вид которой определяется программистом, происходит при вызове IoCreateDevice, то есть при создании объекта функционального устройства драйвера. Указатель на расширения устройства может быть получен по указателю на объект устройства.

В разрабатываемом драйвере в расширении устройства расположена следующая информация:

typedef struct _DEVICE_EXTENSION

{BUFFER UrbPackets;

HANDLE LogFileHandle;

BOOLEAN PreparedToLog;

PURB Urb;

ULONG UrbCount;

PDEVICE_OBJECT topDevObject;

} DEVICE_EXTENSION, *PDEVICE_EXTENSION;

Поясним назначение указанных переменных:

  • UrbPackets – буфер для протоколирования;

  • LogFileHandle – дескриптор файла, в который записывается информация о вводе / выводе;

  • PreparedToLog – флаг, указывающий на то, что подготовка к протоколированию прошла успешно;

  • Urb – пакет, информация о котором переносится в буфер UrbPackets;

  • UrbCount – число URB‑пакетов, прошедших через фильтр;

  • topDevObject – объект устройства, находящийся в стеке под нашим устройством.


3.2 Интерфейс управляющего приложения

Управляющее приложение предназначено для установки драйвера-фильтра в системе и передачи ему параметров протоколирования через системный реестр.

Интерфейс управляющего приложения состоит из главного окна, представленного на рисунке 3.2.1:

Рис. 3.2.2 Интерфейс управляющего приложения

В левой части окна расположен список, в котором отображаются имена устройств, присутствующих в системе.

Перед установкой драйвера-фильтра на некоторый USB‑накопитель, следует создать ключ драйвера в системном реестре. Для этого следует разместить файл драйвера MyUSBFlt.sys в корневом каталоге управляющего приложения и нажать кнопку «Создать ключ драйвера». По окончании операции будет выдано сообщение о ее результате.

Установка драйвера-фильтра допускается только на устройства типа «Запоминающее устройство USB». Для этого устройство следует выделить в списке, а затем ввести максимальный размер лог-файла и путь к нему. После этого следует нажать кнопку «Установить драйвер». В зависимости от результата установки будет выдано сообщение об успехе операции или ее неудаче.

Драйвер-фильтр начнет свою работу после того, как устройство, на которое он был установлен, будет перезапущено. Перезапуск можно осуществить путем выделения нужного устройства в списке и нажатия кнопки «Перезапустить устройство». Того же результата можно добиться, перезапустив устройство типа «Хост-контроллер» или «Корневой концентратор», к которому подключен рассматриваемый USB‑накопитель. Возможен также перезапуск устройства путем отсоединения от порта концентратора и последующего подключения к нему.

Удаление драйвера-фильтра из системы должно производиться в обратном порядке: сначала удаляется драйвер с устройства, а затем ключ драйвера. Это связано с тем, что в случае, если будет удален ключ драйвера, а само устройство не будет освобождено от фильтра, то работа устройства будет блокирована. Но после полного удаления фильтра из системы и перезапуска устройства, его работа будет происходить в обычном режиме.


3.3 Тестирование драйвера-фильтра

Драйвер был протестирован с использованием стандартной тестирующей утилиты DriverVerifier, поставляемой в составе пакета DDK. С помощью этой утилиты были проведены следующие тесты:

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

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

  • Нехватка ресурсов;

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

Все тесты прошли успешно. Память в системе распределялась правильно, ошибок с ней не возникало. На нехватку ресурсов драйвер реагировал корректно. Нетипичные запросы к драйверу не обрабатывались им.

Для отладки драйвера использовалась программа DebugView. Эта утилита позволяет осуществлять перехват отладочных сообщений, выдаваемых драйвером.


Заключение

В данной работе рассмотрен вопрос, связанный с разработкой драйверов устройств в системе Windows, и реализован драйвер-фильтр USB‑накопителя.

Разработанный драйвер предоставляет следующие возможности:

  • возможность установки на любой USB‑накопитель, присутствующий в системе;

  • перехват информации ввода / вывода USB‑накопителя;

  • запись перехваченной информации в файл на диске.

Драйвер-фильтр был протестирован с помощью тестовых утилит из состава пакета DDK и отвечает всем современным требованиям, накладываемым ОС Windows на характеристики драйверов.

Тем не менее, существуют пути по усовершенствованию разработанного программного комплекса. Например, существует возможность по созданию связки «драйвер уровня ядра – управляющее приложение пользовательского уровня», которая при наличии развитых механизмов синхронизации позволила бы получать информацию о вводе / выводе устройства в интерактивном режиме. Но это достаточно трудоемкая задача, выходящая за рамки курсовой работы.




Список литературы и интернет-ресурсов

1. Агуров П.В. Интерфейсы USB. Практика использования и программирования. – СПб.: БХВ-Петербург, 2004. – 576 с.

2. Солдатов В.П. Программирование драйверов Windows. Изд. 2-е, перераб. и доп. – М.: ООО «Бином-Пресс», 2004. – 480 с.

3. Материалы проекта «Windows Assembly Site» – www.wasm.ru.

4. Материалы сайта www.usb.org.

5. MSDN Library, Copyright 1987–2005 Microsoft Corporation.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5137
Авторов
на СтудИзбе
440
Средний доход
с одного платного файла
Обучение Подробнее