- •1. Анализ задания и описание методов решения
- •2 Проектирование программного обеспечения
- •2.1 Проектирование графического интерфейса
- •2.2 Проектирование модуля сбора данных
- •3 Реализация программного обеспечения
- •3.1 Реализация структур данных
- •3.2 Реализация графического интерфейса
- •3.3 Реализация модуля сбора данных
- •4 Тестирование программного обеспечения
- •Список использованных источников
- •Приложение а Листинг программы
3.3 Реализация модуля сбора данных
Модуль сбора данных о системных устройствах реализован в отдельном программном модуле языка С++. Заголовок модуля, как уже описывалось, содержит описание структуры USBDevice и прототип функции GetUSBDeviceList.
В реализации этого модуля содержится описание двух глобальных массивов. Массив props содержит значения типа DEVPROPKEY, которые описывают ключи характеристик описания устройств. Массив props_name содержит строки – текстовые описания этих характеристик. Также в этом модуле описана реализация функции GetUSBDeviceList.
Функция GetDeviceList является внешней функций модуля, так как она должна вызывать основным модулем, реализующим графический интерфейс. В эту функцию передается указатель на объект класса vector<USBDevice> содержащий список устройств, который нужно заполнить USB устройствами, информация о которых получена с помощью функций Win32 API. Ранее отмечалось, что для получения информации об устройствах в этом модуле используется системная библиотека SetupAPI. Сначала осуществляется вызов функции SetupDiGetClassDevs, которая формирует список устройств присутствующих в системе. Вызов этой функции осуществляется таким образом, чтобы в список попали только USB устройства. Для этого в первом параметре указывается стандартный класс USB устройств - GUID_DEVCLASS_USB. Далее все устройства в списке перечисляются в цикле с помощью функции SetupDiEnumDeviceInfo, которая возвращает заполненную структуру SP_DEVINFO_DATA, содержащую информацию об устройстве. Для каждого устройства запрашивается текстовое локализованное описание его класса с помощью функции SetupDiGetClassDescription. Далее для каждого устройства запрашивается его наименование (описание). Для этого с помощью функции SetupDiGetDeviceProperty считывается значение свойства с ключом DEVPKEY_NAME. Далее в цикле запрашиваются значения всех остальных стандартных свойств. На основе полученной информации заполняется переменная типа USBDevice, которая впоследствии заносится в результирующий список устройств.
На рисунке 3.2 приведена обобщенная схема алгоритма работы приложения. Полный листинг модулей реализующих утилиту мониторинга USB устройств, подключенных к компьютеру, приведен в приложении А. В приложении Б приведена обобщенная схема алгоритма работы приложения.
4 Тестирование программного обеспечения
После разработки Linux-утилиты для мониторинга файловой системы было проведено ее тестирование. Тестирование проводилось посредством сравнения данных, полученных с использованием разработанной утилиты, и ручного изменения данных в выбранном каталоге ОС Linux.
В результате проведенного тестирования было выявлено, что разработанная утилита полностью работоспособна. Все события определялись корректно. Также графический интерфейс полностью соответствует требованиям.
Заключение
В результате выполнения курсовой работы была создана Linux-утилита для монитора файловой системы. Утилита была разработана в виде стандартного оконного приложения ОС Linux. Данные о событиях отображаются в удобной форме.
Разработка программы велась на языке С++ в интегрированной среде разработки Qt.
Разработанная утилита прошла ряд испытаний, который показал ее полную работоспособность и готовность к эксплуатации.