
- •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.5 Отримання інформації з ключа реєстру
Як вже було сказано, ключі (keys) подібні до папок, а значення (values) подібні до файлів. Тому кожен ключ може містити багато підключів і значень, так як і папки можуть містити багато підпапок і файлів. Ключі, як і папки потрібні тільки для групування файлів-значень. Інформація ж міститься в файлах та значеннях.
Для отримання інформації, яка знаходиться в одному із значень використовується функція RegQueryValueEx.
Приклад виклику функції RegQueryValueEx – Програма В
.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\International",0 ; Назва ключа, який містить значення
hkey dd ? ; Змінна, яка отримає дескриптор ключа
val_n db "sCurrency",0 ; Назва значення в ключі реєстру з якого
; отримується інформація
val db 255 dup (0) ; Буфер для збереження інформації із
; значення
val_l dd 255 ; Довжина інформації в буфері
.code
start:
invoke RegOpenKeyEx, \ ; Відкриття ключа, див. Програму А
HKEY_CURRENT_USER, \ ; Точка входу в реєстр
addr Subkey, \ ; Див. В13
0, \
KEY_EXECUTE, \ ; Доступ до відкритого ключа
addr hkey ;
invoke RegQueryValueEx, \ ; функція отримання інформації із ; значення реєстру
hkey, \ ; Дескриптор ключа в якому міститься значення
addr val_n, \ ; Вказівник на стрічку В15 з назвою значення
0, \ ; Завжди нуль
0, \ ; Тип значення нас не цікавить
addr val, \ ; Вказує на стрічку В16,яка отримає інформацію
addr val_l ; Вказує на змінну В17, в яку запишиться ; розмір отриманої в В16 інформації
invoke MessageBox,0 , addr val, addr val_n, 0; виводить отриману інформацію
invoke ExitProcess,0
end start
Програма В виводить на екран інформацію, яка міститься в значенні з назвою sCurrency, яке знаходиться в ключі реєстру “HKEY_CURRENT_USER\Control Panel\International”. Опишемо деякі аргументи функції RegQueryValueEx:
В21.4 може вказувати на змінну типу dd (DWORD), яка отримуватиме тип даного значення. Цей параметр може бути рівний нулю, коли тип отримувати не потрібно. В іншому випадку одержаний тип може приймати одне з перелічених значень:
Значення |
Опис |
REG_BINARY |
Двійкові дані будь-якого формату |
REG_DWORD |
32-розрядне число |
REG_DWORD_LITTLE_ENDIAN |
32-розрядне число в форматі little-endian (аналог REG_DWORD). В цьому форматі перший байт слова є старшим байтом. Цей формат є найчастіше вживаним на комп'ютерах з ОС Windows NT та Windows 95. |
REG_DWORD_BIG_ENDIAN |
32-розрядне число у форматі big-endian. В цьому форматі останній байт слова є найстаршим. |
REG_EXPAND_SZ |
Стрічка символів з нулем на кінці, яка містить посилання на змінні середовища (наприклад "%PATH%"). Ця стрічка може представлятися в Unicode або ANSI, залежно від функцій, які ви до неї застосуєте. |
REG_LINK |
Символьне посилання в форматі Unicode. |
REG_MULTI_SZ |
Масив стрічок, який завершується двома символами з нульовим кодом. |
REG_NONE |
Невизначений тип значення |
REG_RESOURCE_LIST |
Список ресурсів для пристрою або драйвера. |
REG_SZ |
Стрічка символів з нулем на кінці. Ця стрічка може представлятися в Unicode або ANSI, залежно від функцій, які ви до неї застосуєте. |
В21.5 вказує на буфер В16, який отримає інформацію із значення. Цей параметр може бути рівний нулю, коли дані не потрібні.
В21.6 вказує на змінну В17, яка визначає розмір буфера заданого в В21.5. Після свого виконання функція записує в змінну В17 кількість байт отриманої інформації.
Коли буфер має недостатній для отримання інформації розмір, функція повертає в ЕАХ значення ERROR_MORE_DATA, і записує в змінну на яку вказує В21.6 кількість байт, які необхідні для отримання інформації.
Коли задати В21.5 рівним нулю, а В21.6 вказуватиме на змінну, то функція повертає ERROR_SUCCESS в ЕАХ, і зберігає в цю змінну кількість байт, які необхідні для отримання інформації. Така поведінка функції дозволяє одразу визначити кількість байт, які треба виділити в пам'яті для повного отримання інформації.
В21.6 може бути нульовим лише тоді коли В21.5 нульовий.