Скачиваний:
26
Добавлен:
01.05.2014
Размер:
55.81 Кб
Скачать

Лабораторная работа 7. Исследование процессов и потоков

Цель работы. Разработать консольное приложение для исследования процессов и связанных с ними потоков

7.1.Возможности программы:

  • получение снимка текущего состояния системы

  • получение упорядоченного списка процессов

  • получение упорядоченного списка потоков для выбранного процесса

7.2.Используемые функции Win32 API (tlhelp32.h):

Таблица вариантов

Критерии сортировки процессов:

Р1 – в порядке убывания числа потоков процесса

Р2 – в порядке возрастания числа потоков процесса

Р3 – в порядке убывания приоритета процесса

Р4 – в порядке возрастания приоритета процесса

Р5 – по имени исполняемого файла

Р6 – по идентификатору процесса

Р7 – по идентификатору модуля

Критерии сортировки потоков:

Т1 - в порядке убывания идентификатора потока

Т2 – в порядке возрастания идентификатора потока

Т3 – в порядке убывания приоритета потока

Т4 – в порядке возрастания приоритета потока

ПРИМЕЧАНИЕ: при отображении списков обязательно показывать параметр объекта, использованный при сортировке!

Вар.01

Вар.02

Вар.03

Вар.04

Вар.05

Вар.06

Вар.07

Вар.08

Вар.09

Вар.10

CreateToolhelp32Snapshot

*

*

*

*

*

*

*

*

*

*

Сортировка процессов:

Р1

Р2

Р3

Р4

Р5

Р6

Р7

Р1

Р2

Р3

Process32First

*

*

*

*

*

*

*

*

*

*

Process32Next

*

*

*

*

*

*

*

*

*

*

Сортировка потоков:

Т1

Т2

Т3

Т4

Т1

Т2

Т3

Т4

Т1

Т2

Thread32First

*

*

*

*

*

*

*

*

*

*

Thread32Next

*

*

*

*

*

*

*

*

*

*

Вар.11

Вар.12

Вар.13

Вар.14

Вар.15

Вар.16

Вар.17

Вар.18

Вар.19

Вар.20

CreateToolhelp32Snapshot

*

*

*

*

*

*

*

*

*

*

Сортировка процессов:

Р4

Р5

Р6

Р7

Р1

Р2

Р3

Р4

Р5

Р6

Process32First

*

*

*

*

*

*

*

*

*

*

Process32Next

*

*

*

*

*

*

*

*

*

*

Сортировка потоков:

Т3

Т4

Т1

Т2

Т3

Т4

Т1

Т2

Т3

Т4

Thread32First

*

*

*

*

*

*

*

*

*

*

Thread32Next

*

*

*

*

*

*

*

*

*

*

Приложение 7. Функции и структуры для исследования процессов и потоков

HANDLE WINAPI CreateToolhelp32Snapshot( // Создание объекта «снимок системы» [out]

DWORD dwFlags, // - флаги [in]

DWORD th32ProcessID // - идентификатор процесса [in]

);

BOOL WINAPI Process32First( // Получение информации о первом процессе в списке процессов

HANDLE hSnapshot, // хэндл снимка [in]

LPPROCESSENTRY32 lppe // указатель на структуру «информация о процессе» [in/out]

);

BOOL WINAPI Process32Next( // Получение информации о следующем процессе в списке процессов

HANDLE hSnapshot, // хэндл снимка [in]

LPPROCESSENTRY32 lppe // указатель на структуру «информация о процессе» [out]

);

BOOL WINAPI Thread32First( // Получение информации о первом потоке в списке потоков

HANDLE hSnapshot, // хэндл снимка [in]

LPTHREADENTRY32 lpte // указатель на структуру «информация о потоке» [in/out]

);

BOOL WINAPI Thread32Next( // Получение информации о следующем потоке в списке потоков

HANDLE hSnapshot, // хэндл снимка [in]

LPTHREADENTRY32 lpte // указатель на структуру «информация о потоке» [out]

);

typedef struct tagPROCESSENTRY32

{

DWORD dwSize; - размер структуры

DWORD cntUsage; - счетчик ссылок на процесс

DWORD th32ProcessId; - идентификатор процесса

DWORD th32DefaultHeapId; - идентификатор ДОП по умолчанию

DWORD th32ModuleId; - идентификатор модуля

DWORD cntThreads; - число потоков процесса

DWORD th32ParentProcessId; - идентификатор родительского процесса

LONG pcPriClassBase; - базовый класс приоритета

DWORD dwFlags; - флаги

char szExeFile[MAX_PATH]; - путь к файлу

}PROCESSENTRY32;

typedef PROCESSENTRY32 *PPROCESSENTRY32;

typedef PROCESSENTRY32 *LPPROCESSENTRY32;

typedef struct tagTHREADENTRY32

{

DWORD dwSize; - размер структуры

DWORD cntUsage; - счетчик ссылок на поток

DWORD th32ThreadId; - идентификатор поток

DWORD th32OwnerProcessId; - идентификатор процесса-владельца

LONG tpBasePri; - текущий приоритет потока

LONG tpDeltaPri; - относительный приоритет потока

DWORD dwFlags; - флаги

}THREADENTRY32;

typedef THREADENTRY32 *PTHREADENTRY32;

typedef THREADENTRY32 *LPTHREADENTRY32;

Соседние файлы в папке Задания на лабы для ВТ