Курсовая работа: Разработка вспомогательной системной программы в системе программирования Delphi с использованием средств WinApi

С4-Закрытие формы. Данное событие имеет стандартный обработчик. Его описание опущено.

Алгоритм обработки событий для третьей формы приложения.

Глобальные переменные:

hDrive,hMBRDrive: THandle; - Дескрипторы дисков для работы с главной загрузочной записью носитель и блоком параметров Bios.

DiscGeometry:TDiscGeometry; - Структрура DiscGeometry Имеет в своём составе такие поля как количество секторов на дорожке , количество дорожек на носителе , количество байт в секторе,

1) Описание события С1. Данное событие происходит при нажатии на кнопку

«Начать работу с диском». Если дескрипторы дисков уже существуют, то происходит их уничтожение. Далее происходит создание новых дескрипторов дисков. Если дескрипторы создаются успешно, то происходит заполнение структуры DiskGeometry, в полях которой содержатся данные о диске и вывод их в соответствующее поле. Если дескрипторы создать не удалось, то выводится сообщение об ошибке.

Алгоритм обработки данного события представлен на схеме1.

Схема 1 - Алгоритм работы обработчика события С1.

2) Описание события С2: Данное событие происходит по нажатию на кнопку

«Считать BPB», после этого происходит обработка этого события. Данные из дескриптора диска читаются в буфер, эти данные располагаются в первом секторе логического диска. Если данные считаны, то происходит заполнение специальных таблиц данными из этого буфера, если нет, то выводится специальное сообщение о том, что данные прочитать не удалось.

Алгоритм обработчика этого события представлен на схеме2.


Схема2 –Обработчик события С2. «Считывание блока параметров BIoS»

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


Дополнительные структуры и алгоритмы

В данном разделе будут рассмотрены дополнительные логические структуры приложения:

1) Алгоритм работы потока «приёмника» (программно ThreadReceiver)

2) Алгоритм работы модуля, определяющего все активные носители, присутствующие в системе.(программно расположена в модуле HDDInfo).

1) Алгоритм работы потока «приёмника» представлен на схеме 4. Описание алгоритма: В потоке организуется бесконечный цикл(пока поток не остановлен) в этом цикле проверяется некоторое событие, сигнализирующее потоку о том, что данные записаны в файл. После того как событие перешло в сигнальное состояние происходит его обратный сброс в несигнальное состояние. Затем происходит проецирование файла, переменная которого уже создана при запуске основной программы, на адресное пространство процесса. Если проекция создана, то данные читаются из файла и передаются в основную форму программы, а точнее в поле истории переписки. Если создать проекцию не удалось то появляется соответствующее сообщение.

Схема 4 – Алгоритм работы потока «приёмника».


2) Описание алгоритма работы модуля, определяющего все активные носители в системе. Алгоритм работы представлен на схемах 5,6,7 и 8.

1. Описание алгоритма (схема5): При выполнении функции, реализующей данный алгоритм, в её теле происходит создание массива имён диско – массив латинских букв A-Z. После этого в цикле происходит считывание имён дисков присутствующих в системе и сравнивание этих имён с именами из массива. Если носитель с данным именем присутствует, то это имя возвращается в качестве результата работы функции.

Схема 5 –Алгоритм получения имени носителя, присутствующего в системе.

2. Описание алгоритма (схема6 ): Данный алгоритм необходим для верного определения номера системного носителя. Входными параметрами для этой функции является номер логического диска полученный с помощью API функции GetVolumeInformation. Данный номер считывается в строку и длина этой строки присваивается специальной переменной. Если значение этой переменной не равно восьми, происходит выход из процедуры, если и значение номера не меняется, если длина равна 8, то в цикле происходит изменение номера, считанного с помощью функции GetVolumeInformation, на правильный. В семействе ОС Windowsв поздних версиях таких как «XP», «Vista» и «7» номер, полученный с помощью функции GetVolumeInformation является общим для всех носителей присутствующих в системе, хотя на практике это не является таковым.

К-во Просмотров: 431
Бесплатно скачать Курсовая работа: Разработка вспомогательной системной программы в системе программирования Delphi с использованием средств WinApi