
- •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. Контрольні запитання
- •Для нотаток Для нотаток Для нотаток
1.2 Категорії даних
Перед записом даних в реєстр, програма повинна розділити дані на дві категорії: комп’ютерно-орієнтовані дані і користувацько-орієнтовані. Таке розрізнення дозволяє програмі підтримувати різні настройки для різних користувачів і навіть розміщувати користувацько-орієнтовані дані в мережі, реалізуючи незалежний від розміщення користувацький профіль. (користувацький профіль – це набір конфігураційних даних кожного користувача.)
Коли програма інсталюється, вона повинна записати комп’ютерно-орієнтовані дані за ключем HKEY_LOCAL_MACHINE. Як правило програма створює ключі для імені компанії, імені продукту, та номеру версії, як показано в наступному прикладі:
HKEY_LOCAL_MACHINE\Software\MyCompany\MyProduct\1.0
Якщо програма підтримує OLE, вона повинна записати відповідні дані в HKEY_LOCAL_MACHINE\Software\Classes.
Кожна програма повинна записати користувацько-орієнтовані дані за ключем HKEY_CURRENT_USER, як показано в прикладі:
HKEY_CURRENT_USER\Software\MyCompany\MyProduct\1.0\...
1.3 Відкриття і закриття ключів реєстру
Для роботи з реєстром необхідно отримати дескриптор ключа. Отримати дескриптор можна двома способами: створити або відкрити ключ. Для того, щоб відкрити ключ викликається Win32 API функція RegOpenKeyEx.
Приклад виклику функції RegOpenKeyEx – Програма A
.386
.model flat, stdcall
include c:\masm32\include\windows.inc
include c:\masm32\include\kernel32.inc
include c:\masm32\include\advapi32.inc ; необхідна для роботи з реєстром
include c:\masm32\include\user32.inc
include c:\masm32\include\masm32.inc
includelib c:\masm32\lib\kernel32.lib
includelib c:\masm32\lib\user32.lib
includelib c:\masm32\lib\masm32.lib
includelib c:\masm32\lib\advapi32.lib ; необхідна для роботи з реєстром
.data
Subkey db "Control Panel\Desktop",0 ; Назва ключа, який відкривається
hkey dd ? ; Змінна,яка отримає дескриптор ключа
.code
start:
invoke RegOpenKeyEx, \ ; Функція відкриття ключа реєстра
HKEY_CURRENT_USER, \ ; Точка в реєстрі з якої відкривається ключ
addr Subkey, \ ; Див. А13
0, \ ; Завжди рівне нулю
KEY_EXECUTE, \ ; Режим доступу до відкритого ключа
addr hkey ; Посилання на змінну в А14
invoke RegCloseKey, hkey ; Закриття дескриптора ключа
invoke ExitProcess,0 ; Вихід з програми
end start
В програмі А після виклику функції RegOpenKeyEx в А17 отримується дескриптор для ключа з назвою “Control Panel\Desktop\”. Назву ключа оголошено в А13. Дескриптор потрапляє в змінну А14. Опишемо детальніше аргументи для функції RegOpenKeyEx, які містяться в стрічках А17.1-А17.5:
А17.1 являється дескриптором вже відкритого ключа; можна використати такі стандартні відкриті ключі:
HKEY_CLASSES_ROOT HKEY_CURRENT_CONFIG HKEY_CURRENT_USER HKEY_LOCAL_MACHINE HKEY_USERS
А17.2 містить посилання на назву ключа, який відкривається (А13).
А17.3 зарезервовано OC Windows, мусить бути нульовим.
А17.4 вказує режим доступу до відкритого ключа. Цей параметр може приймати наступні значення:
Значення |
Опис |
KEY_ALL_ACCESS |
Комбінація з KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, KEY_CREATE_SUB_KEY, KEY_CREATE_LINK та KEY_SET_VALUE прав доступу. |
KEY_CREATE_LINK |
Дозвіл на створення символьного посилання. |
KEY_CREATE_SUB_KEY |
Дозвіл на створення підключів. |
KEY_ENUMERATE_SUB_KEYS |
Дозвіл на перегляд підключів. |
KEY_EXECUTE |
Дозвіл на читання інформації. |
KEY_NOTIFY |
Дозвіл на отримання сповіщень про зміни. |
KEY_QUERY_VALUE |
Дозвіл на читання інформації, яка міститься в підключах. |
KEY_READ |
Комбінація прав доступу KEY_QUERY_VALUE, KEY_ENUMERATE_SUB_KEYS і KEY_NOTIFY. |
KEY_SET_VALUE |
Дозвіл на зміну інформації в підключах. |
KEY_WRITE |
Комбінація прав доступу KEY_SET_VALUE та KEY_CREATE_SUB_KEY. |
А17.5 – посилання (addr) на змінну оголошену в А14; ця змінна й отримає дескриптор відкритого ключа.
Коли робота з ключем завершена викликається функція закриття дескриптора RegCloseKey (А18).