Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ Монитор процессов и потоков СП_правленный.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
197.12 Кб
Скачать
      1. Получение информации о загруженных драйверах

Для получения информации о загруженных в память драйверах и их адресах используются функции EnumDeviceDrivers(), GetDeviceDriverBaseNameA(), GetDeviceDriverFileNameA(), вызываемые из библиотеки Psapi.dll. Прототипы функций имеют следующий вид:

function EnumDeviceDrivers(lp: pointer; cb: DWORD; lpcbNeeded: lpDWORD): BOOL; stdcall external 'psapi.dll';

function GetDeviceDriverBaseNameA(lp: pointer; lpBaseName: lpstr; nSize: DWORD): BOOL; stdcall external 'psapi.dll';

function GetDeviceDriverFileNameA(lp: pointer; lpFilename:LPTSTR; nSize: DWORD): DWORD; stdcall external 'psapi.dll';

Функция EnumDeviceDrivers (lp: pointer; cb: DWORD; lpcbNeeded: lpDWORD): BOOL возвращает массив указателей на загруженные в ОП драйверы. Указатель на массив задается первым аргументом функции, второй аргумент (входной параметр) задает размер массива, если этот размер является недостаточным, требуемый размер возвращается функцией в третьем параметре.

Пример вызова функции:

var

pdriver : array [1..138] of cardinal;

lpcbNeeded : dword;

if EnumDeviceDrivers(@pdriver, sizeof(pdriver), @lpcbNeeded)

then

label1.Caption := inttostr(lpcbNeeded)

Для получения списка имен драйверов служит функция GetDeviceDriverBaseNameA(lp: pointer; lpBaseName: lpstr; nSize: DWORD). Она получает адрес загруженного драйвера (первый аргумент) и размер имени драйвера (третий аргумент) и возвращает имя драйвера.

Пример вызова функции:

var

pdriver: array [1..138] of cardinal;

lpcbNeeded: dword;

i: integer;

basename: lpstr;

for I := 1 to lpcbneeded div 4 do

begin

getmem(basename,50);

GetDeviceDriverBaseNameA(pointer(pdriver[i]), BaseName, 50);

Методика выполнения

I. Выполнить базовые задания для всех студентов:

  1. Используя компонент ListBox, построить список процессов, выполняющихся в системе.

  2. Добавить возможность завершения прикладных процессов системы с указанием процесса курсором окна ListBox. Системные процессы (службы) завершать не нужно. Проверить работу приложения.

II. Выполнить индивидуальное задание для студента, прописанное в карточке-задании.

3. Отчет о выполненной контрольной работе

Отчет о выполненной контрольной работе оформляется в письменном виде на бумаге формата А4.

Содержание отчета:

  1. Титульный лист с номером варианта задания, фамилией студента и преподавателя.

  2. Перечень использованных при выполнении работы функций Win32 API и их назначение в виде таблицы.

  3. Описание алгоритма и текст программной реализации (только обработчики событий) индивидуального задания.

  4. Результаты, полученные при выполнении индивидуального задания (screenshot).

4. Контрольные вопросы

  1. Функции Win32 API для получения базовых сведений о выполняющихся в системе процессах и используемых ими ресурсах.

  2. Атрибуты (описатели, характеристики) процесса Win32.

  3. Алгоритм работы приложения для получения списка имен выполняющихся процессов.

  4. Алгоритм работы приложения для получения списка модулей, используемых процессом.

  5. Алгоритм работы приложения для получения списка куч, используемых процессом.

  6. Алгоритм принудительного завершения процесса.

  7. Назначение и использование функции OpenProcess.

  8. Функции Win32 API для получения базовых сведений о выполняющихся в системе процессах и используемых ими ресурсах.

  9. Атрибуты (описатели, характеристики) процесса Win32, рассмотренные в работе (часть 1 и часть 2).

  10. Функции Win32 API для получения информации о времени выполнения процессов и потоков.

  11. Функции Win32 API для преобразования времени из формата filetime в общепринятый формат.

  12. Функции Win32 API для получения информации счетчиков ввода-вывода.

  13. Способ неявного вызова функций из DLL.

  14. Функции Win32 API для получения информации об используемой процессом памяти.

  15. Функции Win32 API для получения информации о загруженных драйверах. Аргументы функций. Алгоритм получения списка имен загруженных драйверов.

  16. Назначение и использование функции OpenProcess.