
- •6.050101 «Комп’ютерні науки»
- •Загальні вимоги до виконання лабораторних робіт
- •Лабораторна робота №1
- •1. Основні теоретичні відомості
- •1.1 Основні поняття
- •1.2 Створення процесу
- •1.3 Створення потоку
- •2. Хід роботи
- •4. Завдання
- •5. Контрольні запитання
- •6.Список використаної літератури
- •Додаток 1
- •Додаток 2
- •Додаток 3
- •Функція CreateProcess створює новий процес.
- •Додаток 4
- •Додаток 5
- •Addr ThreadId – Створює новий потік.
- •Додаток 6
- •Додаток 7
- •Лабораторна робота №2
- •1. Основні теоретичні відомості
- •1.1 Механізми міжпроцесової взаємодії
- •1.2 Механізми синхронізації процесів та потоків
- •1.3 Об’єкти синхронізації
- •1.4 Очікуючі функції
- •1.5 Створення атома
- •1.6 Створення каналу
- •2. Хід роботи
- •4. Завдання
- •5. Контрольні запитання
- •6.Список використаної літератури
- •Додаток 1
- •Додаток 2
- •Додаток 3
- •Додаток 4
- •Додаток 5 Детальний опис функції створення анонімного каналу
- •Додаток 6 Детальний опис функції створення іменованого каналу
- •Додаток 7
- •Додаток 8
- •Додаток 9 Текст програми створення анонімного каналу
- •Додаток 10
- •Лабораторна робота №3
- •1. Основні теоретичні відомості
- •2. Приклад програми створення dll
- •Опис програми My_dll.Asm та файлу лістінга My_dll.Def
- •4. Трансляція та компонування dll Для того, щоб відтранслювати(ml.Exe) та зкомпонувати (link.Exe) даний .Asm код, потрібно використовувати наступні параметри:
- •5. Приклад використання функції з бібліотеки
- •Приклад програми завантаження dll
- •7. Створення файлу лістінгу існуючої бібліотеки
- •8. Приклад передачі даних у функцію бібліотеки Створення динамічно завантажуваної бібліотеки
- •Передача параметру у функцію бібліотеки
- •9. Хід роботи
- •11. Завдання
- •12. Контрольні запитання
- •13. Список використаної літератури
- •Лабораторна робота №4
- •1. Основні теоретичні відомості
- •Параметри функції CreateToolhelp32Snapshot:
- •2. Перегляд процесів
- •3. Перегляд потоків
- •Значення результуючого параметру (регістр еах) таке саме як в Process32First і Process32Next.
- •4. Перегляд хіпів асоційованих з процесом
- •5. Перегляд модулів, які використовує процес
- •6. Керування процесами
- •7. Хід роботи
- •9. Завдання На 75 балів виконати 4 завдання:
- •10. Контрольні запитання
- •11. Список використаної літератури
- •Додаток 1
- •Лабораторна робота №5
- •Основні теоретичні відомості
- •1.1 Основні поняття
- •1.2 Категорії даних
- •1.3 Відкриття і закриття ключів реєстру
- •1.4 Створення підключа у відкритому ключі реєстру
- •1.5 Отримання інформації з ключа реєстру
- •1.6 Перелічення списку значень для заданого ключа реєстру
- •1.7 Виявлення змін в гілці реєстру
- •1.8 Робота з налаштуваннями операційної системи через реєстр
- •2. Хід роботи
- •4. Завдання
- •5. Контрольні запитання
- •6. Список використаної літератури
- •Додаток 1
- •Лабораторна робота №6
- •1. Основні теоретичні відомості
- •Породження процесів
- •1.2 Породження потоків
- •2. Хід роботи
- •4. Індивідуальні завдання
- •5. Контрольні запитання
- •Для нотаток Для нотаток Для нотаток
12. Контрольні запитання
1. Яка різниця між dll та lib бібліотеками?
2. Які є два способи завантаження dll?
3. Яка функція завантажує dll?
4. Яка функція вивантажує dll?
5. З допомогою яких програм можна створити файл лістингу dll?
13. Список використаної літератури
Help по функціях API - www.nan32asm.cjb.net
Microsoft Windows Help - Win32 Programmers Reference
Технічна документація Microsoft - MSDN
www.win32asm.newmail.ru/
Книга по програмуванню під Windows - www.win32asm.cjb.net
Лабораторна робота №4
Тема: Керування процесами і потоками у середовищі ОС Windows.
Мета: Навчитись керувати процесами та потоками в середовищі ОС Windows використовуючи пакет MASM32.
1. Основні теоретичні відомості
Функції WinAPI забезпечують широкі можливості для отримання інформації про запущені процеси та потоки і для керування ними.
Функція CreateToolhelp32Snapshot дозволяє отримати список запущених процесів і потоків та детальну інформацію про вказаний процес. Формат виклику:
invoke CreateToolhelp32Snapshot, dwFlags, th32ProcessID
Коли встановити параметр-індетифікатор процесу th32ProcessID, то можна отримати детальну інформацію про заданий процес. А саме, перелік модулів з яких складається процес і список хіпів виділених ним.
Примітка. Хіп (Heap) – динамічна область пам'яті виділена процесом.
Параметри функції CreateToolhelp32Snapshot:
dwFlags (вхідний) - Частини системи, які включатимуться в список (snapshot). Цей параметр може приймати одне з перелічених значень:
Значення |
Пояснення |
TH32CS_INHERIT |
Позначає, що дескриптор списку є наслідуваний (передається породженому процесу). |
TH32CS_SNAPALL |
Включає всі процеси та потоки в системі плюс хіпи та модулі для процеса вказаного в th32ProcessID. Еквівалентно вказанню значень TH32CS_SNAPHEAPLIST, TH32CS_SNAPMODULE, TH32CS_SNAPPROCESS, TH32CS_SNAPTHREAD. |
TH32CS_SNAPHEAPLIST |
Включає всі хіпи для процеса вказаного в th32ProcessID. Для операції перегляду хіпів, див. функцію Heap32ListFirst. |
TH32CS_SNAPMODULE |
Включає всі модулі для процеса вказаного в th32ProcessID. Для операції перегляду модулів, див. функцію Module32First. |
TH32CS_SNAPPROCESS |
Включає всі запущені процеси в системі. Для операції перегляду процесів див. функцію Process32First. |
TH32CS_SNAPTHREAD |
Включає всі діючі потоки в системі. Для операції перегляду потоків див. функцію Thread32First. Щоб ідентифікувати якому процесу відповідає даний потік, зверністься до поля th32OwnerProcessID в структурі THREADENTRY32. |
th32ProcessID (вхідний) - Ідентифікатор процесу, який використовується при побудові списку. Цей параметр може бути нульовим, щоб ідентифікувати поточний процес. Даний параметр використовується лише для значень TH32CS_SNAPHEAPLIST, TH32CS_SNAPMODULE або TH32CS_SNAPALL. У випадку перегляду всіх доспупних процесів або потоків в системі (значення TH32CS_SNAPPROCESS або TH32CS_SNAPTHREAD) він ігнорується.
Вихідне значення (регістр ЕАХ)
При успішному виконанні функція повертає дескриптор списку. При помилці функція повертає INVALID_HANDLE_VALUE. Щоб отримати детальнішу інформацію про помилку визвіть функцію GetLastError.
Примітка. Щоб здійснити перегляд хіпів або модулів для всіх процесів в системі, вкажіть TH32CS_SNAPALL для dwFlags і встановість th32ProcessID = 0. Потім для кожного процесу в списку викличте функцію CreateToolhelp32Snapshot ще раз, задавши його ідентифікатор процесу та TH32CS_SNAPHEAPLIST або TH32_SNAPMODULE (хіпи і модулі відповідно).
Для завершення роботи з списком треба викликати функцію CloseHandle:
invoke CloseHandle, SnapshotHandle
де SnapshotHandle – дескриптор списку
Повернутий функцією список перегдядається з допомогою інших API функцій.