Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Metodychka-lab_OS.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.35 Mб
Скачать

2. Перегляд процесів

Для перегляду запущених процесів використовуються дві функції Process32First та Process32Next. Перша призначена для отримання даних про найперший процес в списку, а друга для всіх наступних. Ці дві функції мають однакові параметри:

invoke Process32First, SnapshotHandle, addr ProcEntry

invoke Process32Next, SnapshotHandle, addr ProcEntry

де addr ProcEntry – адреса об’єкта структури PROCESSENTRY32. Ця структура описує один запис із списку процесів, які знаходилися в системному адресному просторі після виконання функції CreateToolhelp32Snapshot.

Коли вихідний параметер цих функцій (регістр ЕАХ) рівний TRUE, то успішне виконання, коли FALSE – помилка. Інформацію про помилку можна дізнатися з допомого функції GetLastError.

STRUC PROCESSENTRY32

dwSize DWORD ? ; Довжина структури в байтах

cntUsage DWORD ? ; Кількість посилань на процес (зазвичай 1)

th32ProcessID DWORD ? ; Ідентифікатор процесу

th32DefaultHeapID DWORD ? ; Ідентифікатор хіпу по замовч. (для вн. використ.)

th32ModuleID DWORD ? ; Ідентифікатор модуля процесу (зазвичай 0)

cntThreads DWORD ? ; Кількість запущених процесом потоків

th32ParentProcessID DWORD ? ; Ідентифікатор батьківського процесу(зазвичай 0)

pcPriClassBase DWORD ? ; Базовий пріоритет потоків створених процесом

; (зазвичай THREAD_PRIORITY_NORMAL)

dwFlags DWORD ? ; Зарезервовано системою

szExeFile db MAX_PATH dup (?) ; Стрічка завершена нулем, яка містить

; шлях і назву виконуваного файлу

th32MemoryBase DWORD ? ; Адреса, куди завантажено виконуваний файл

th32AccessKey DWORD ? ; Масив з бітів, кожен з яких визначає права

; доступу до адресного простору процесу

ENDS PROCESSENTRY32

Зауваження:

Перед викликом функції Process32First, потрібно встановити dwSize рівним sizeof(PROCESSENTRY32). Коли цього не зробити функція не буде працювати.

Щоб використовувати ідентифікатори процесів та потоків з GetThreadTimes та іншими функціями, які керують процесами, ідентифікатори можна задавати безпосередньо. Однак доступ різних процесів один до одного (керування) вимагає використання функції SetProcPermissions.

3. Перегляд потоків

Щоб переглянути діючі потоки зі списку використовуються функції Thread32First і Thread32Next. Вони аналогічні вищеописаним Process32First і Process32Next з тією різницею, що працюють з структурою THREADENTRY32.

invoke Thread32First, SnapshotHandle, addr ThrEntry

invoke Thread32Next, SnapshotHandle, addr ThrEntry

де addr ThrEntry – адреса об’єкта структури THREADENTRY32. Ця структура описує один запис із списку потоків, які знаходилися в адресному просторі після виконання функції CreateToolhelp32Snapshot.

Значення результуючого параметру (регістр еах) таке саме як в Process32First і Process32Next.

STRUC THREADENTRY32

dwSize DWORD ? ; Довжина структури в байтах

cntUsage DWORD ? ; Кількість посилань на потік (потік виконується, коли

; це значення не рівне нулю)

th32ThreadID DWORD ? ; Ідентифікатор потоку (сумісний з ідентифікатором,

; який повертає функція CreateProcess)

th32OwnerProcessID DWORD ? ; Ідентифікатор процесу, який створив цей потік

tpBasePri DWORD ? ; Початковий рівень пріоритету потоку (від 0 до 255)

tpDeltaPri DWORD ? ; Зміна рівня пріоритету по відношенню до початкового

; (знакове ціле, яке відображає цю зміну)

dwFlags DWORD ? ; Зарезервовано системою

th32AccessKey DWORD ? ; Масив з бітів, кожен з яких визначає права

; доступу до адресного простору процесу

th32CurrentProcessID DWORD ? ; Ідентифікатор процесу в якому виконується потік

ENDS THREADENTRY32

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]