- •Введение
- •1. Методы и средства получения информации о ресурсах вычислительной системы
- •1.1. Получение информации о выполняющихся процессах и используемых ими ресурсах
- •1.1.1. Получение списка процессов, выполняющихся в системе
- •1.1.1.1. Использование функций CreateToolHelp32Snapshot () и Process32xxxx() для получения списка имен процессов
- •1.1.1.2. Использование функций CreateToolHelp32Snapshot () и Thread32xxxx() для получения сведений о приоритетах потоков процессов
- •1.1.2. Использование функций CreateToolHelp32Snapshot () и Module32xxxx() для получения списка модулей
- •1.1.3. Использование функций CreateToolHelp32Snapshot () и Heap32Listxxxx() для получения списка куч
- •1.1.4. Получение дополнительной информации о процессах и потоках
- •1.1.4.2. Получение информации счетчиков ввода-вывода и количества описателей (дескрипторов)
- •Получение информации о загруженных драйверах
- •1.1.6. Использование функции NtQuerySystemInformation
- •1.1.6.1. Назначение аргументов функции
- •1.1.6.2. Вызов функции NtQuerySystemInformation
- •1.1.6.3. Получение сведений о процессах и потоках
- •1.1.6.4. Преобразование данных из формата FileTime в формат SystemTime
- •1.1.6.5. Вычисление загрузки процессора
- •1.1.7 Формирование протокола использования процессора
- •1.2. Получение информации о ресурсах виртуальной памяти и системе
- •1.2.1. Функции и структуры данных управления виртуальной памятью
- •1.2.2. Получение информации о структуре виртуального адресного пространства
- •1.3. Получение информации о файловой системе
- •1.3.1. Определение имеющихся логических дисков
- •1.3.2. Получение информации о томах
- •1.3.3. Поиск файлов
- •1.4. Методы и средства работы с реестром
- •1.4.1. Открытие и закрытие родительского раздела
- •1.4.2. Создание подразделов
- •1.4.3. Установка значения параметра
- •1.4.4. Получение значения параметра
- •1.4.5. Уведомление приложения об изменениях в разделе реестра
- •1.4.6. Использование компонента Registry
- •1.4.7. Поиск в разделе реестра имен файлов приложений, являющихся локальными серверами автоматизации
- •1.5. Использование функции ReadDirectoryChangesW для отслеживания изменений в файловой системе
- •2. Средства управления выполнением прикладных процессов
- •2.1. Функции Win32 для создания и управления процессами
- •2.2. Функции Win32 для создания и управления потоками
- •2.3. Завершение выбранного процесса
- •3. Методы реализации мониторинга ресурсов
- •3.1. Мониторинг процессов
- •3.2. Программирование «с защитой от ошибок»
- •Требования к разрабатываемому монитору
- •4.1. Требования к выполняемым функциям
- •4.2. Требования к реализации
- •4.3. Требования к документации
- •4.4. Список вопросов для приема курсовой работы
- •Библиографический список
- •Приложение 1 График выполнения курсовой работы
- •Приложение 2 Примеры описания реализации отдельных функций монитора и оформления разделов пояснительной записки
- •1. Вывод списка выполняющихся процессов в виде дерева.
- •2. Формирование протокола использования процессора
- •3. Протоколирование моментов времени внесения изменений в файловую систему с записью выполненных изменений и имён приложений, выполнивших изменения.
- •4. Поиск одинаковых файлов, хранящихся в различных каталогах (необходимо обеспечить возможно большую скорость выполнения операции). Вводить имена файлов или каталогов перед началом поиска не следует.
- •9. Вывод списка прав текущего пользователя
- •10. Пример составления перечня используемых компонентов
- •11. Пример заполнения таблицы использованных компонентов
- •12. Пример описания основных переменных
- •13. Пример составления руководства пользователя по инсталляции и использованию монитора
- •14. Пример описания процедуры тестирования монитора
- •Системное программное обеспечение Учебное пособие
- •443100, Г. Самара, ул. Молодогвардейская, 244.
- •443100, Г. Самара, ул. Молодогвардейская, 244. Корпус № 8
9. Вывод списка прав текущего пользователя
Описание решения
Для получения прав пользователя используется процедура GetMem(pTokenInfo, TokenSize) Результат выполнения:
Рисунок П2.3 список прав текущего пользователя
10. Пример составления перечня используемых компонентов
Модуль Monitor
В данном модуле находится главная форма приложения TForm1. В таблице приведены функции TForm1 и их назначение.
В данной таблице описаны только основные функции и процедуры монитора.
Таблица 1. Функции и процедуры монитора
Метод |
Назначение |
btCloseProcsClick |
Вызывается пользователем для принудительного завершения процесса. |
samestartClick |
Вызывается для поиска одинаковых файлов |
Timer2Timer |
Событие, вызываемое периодически для обновления списка процессов, вывода информации по процессам и ведения протокола процессов. |
ProcInfo |
Вызывается для получения информации о процессоре |
smbtnClick |
Событие, вызываемое при нажатии на кнопку начала/останова слежения за ФС |
FormCreate |
Подготовка к запуску монитора, установка свойств основных компонентов. |
ListView3CustomDrawItem |
Процедура, позволяющая чередовать цвет строк в компонентах TListView, расположенных на форме |
GetPriv |
Служит для получения списка прав текущего пользователя |
InsertArray |
Рекурсивная функция построения дерева |
Модуль uAbout
В этом модуле содержится форма TAboutForm. Никакой функциональной нагрузки модуль не несёт, а отображает информацию о программе.
Модуль FileMon
Класс TMonitorDriver является базовым и предназначен для инкапсуляции логики управления драйвером. Он также делает довольно большой объём работы по обработке поступающих от драйвера данных. Все специфичные функции по обработке данных объявлены как абстрактные виртуальные функции и являются обязательными для замещения в дочерних классах. Класс унаследован от стандартного класса TThread. Это позволяет данному классу создавать поток выполнения. Таким образом реализуется асинхронная обработка данных.
В таблице приведены функции класса TMonitorDriver и их назначение.
Таблица 2. Назначение функций
Функция |
Назначение |
Виртуальные абстрактные функции | |
GetDriverFile |
Возвращает имя файла драйвера. |
GetDriverName |
Возвращает имя драйвера. |
ZeroStats |
Сбрасывает статистику драйвера. |
GetStats |
Получает статистику драйвера. |
GetExcludeFilter |
Возвращает фильтр игнорируемых файлов/разделов. |
GetIncludeFilter |
Возвращает фильтр обрабатываемых файлов/разделов. |
GetLogReads |
Возвращает значение признака протоколирования чтения. |
GetLogWrites |
Возвращает значение признака протоколирования записи. |
OnLoadDriver |
Вызывается при загрузке драйвера. |
StartDriver |
Запускает драйвер. |
StopDriver |
ФнОстанавливает драйвер. |
Невиртуальные функции | |
ReadStatistics |
Читает статистику драйвера и выводит её в протокол. |
Execute |
Унаследованная функция, вызываемая при запуске потока. |
LoadDriver |
Загружает драйвер. |
UnloadDriver |
Выгружает драйвер. |
Start |
Запускает драйвер, вызывая виртуальную функцию StartDriver |
Stop |
Останавливает драйвер, вызывая виртуальную функцию StopDriver |
Ping |
Проверяет доступность драйвера. |
Окончание таблицы 2.
Свойства | |
IncludeFilter |
Определяет какие файлы/разделы учитываются при протоколировании. |
ExcludeFilter |
Определяет какие файлы/разделы игнорируются при протоколировании. |
LogReads |
Показывает, ведётся ли протоколирование чтения. |
LogWrites |
Показывает, ведётся ли протоколирование записи. |
Capturing |
Показывает активность драйвера. |
UpdateInterval |
Задаёт период опроса драйвера. |
Модуль CPUID
Модуль определения типа и поддерживаемых инструкций процессора