- •1Розробка універсальних додатків для різних типів кодувань символьної інформації
- •1.1Мета роботи
- •1.2Методичні вказівки з організації самостійної роботи студентів
- •1.2.1Типи даних char і wchar_t. Універсальне завдання типу
- •1.2.2Функції для роботи з рядками для ansi і unicode кодувань
- •1.2.3Файл tchar.H. Пошук імен для універсальних функцій
- •1.2.4Визначення типу тексту і перетворення типу кодування тексту
- •1.3Порядок виконання лабораторної роботи
- •2.2.2Загальна характеристика динамічних бібліотек
- •2.2.3Створення статичних бібліотек
- •2.2.4Створення dll
- •2.2.5Використання dll
- •2.2.6Алгоритм шифрування rsa
- •2.3Порядок виконання лабораторної роботи
- •3.3Порядок виконання лабораторної роботи
- •3.5Контрольні запитання і завдання
- •4Керування зовнішніми пристроями. Нестандартні пристрої
- •4.1Мета роботи
- •4.2Методичні вказівки з організації самостійної роботи студентів
- •4.3 Порядок виконання лабораторної роботи
- •4.5Контрольні питання и завдання
- •5.2.2Інформація про файлову систему пристрою
- •5.2.3Визначення вільного місця на пристрої
- •5.3Порядок виконання лабораторної роботи
- •5.5Контрольні запитання і завдання
- •7.3Порядок виконання лабораторної роботи
- •7.5Контрольні запитання і завдання
- •8 Керування потоками
- •8.1Мета роботи
- •8.2Методичні вказівки з організації самостійної роботи студентів
- •8.3Порядок виконання лабораторної роботи
- •8.5Контрольні питання й завдання
- •9 Керування розподілом пам'яті (wіnapі)
- •9.1Мета роботи
- •9.2Методичні вказівки з організації самостійної роботи студентів
- •9.3Порядок виконання лабораторної роботи
- •9.5Контрольні питання й завдання
- •10 Синхронізація процесів і потоків
- •10.1Мета роботи
- •10.2Методичні вказівки з організації самостійної роботи студентів
- •10.3Порядок виконання лабораторної роботи
- •10.5 Контрольні питання й завдання
- •Список використаних джерел
- •Додаток а Стандартні функції для введення – виведення даних для стандартних пристроїв. Функції для роботи з файлами.
7.3Порядок виконання лабораторної роботи
1. Скласти макроси для спрощення використання функції CreateProcess для случав негайного й відкладеного запуску програми.
2. Скласти 3 програми. Перша програма має запустити текстовий редактор і створити текстові файли в заданій папці. Друга програма для всіх створених першою програмою файлів визначає їх розмір, кількість рядків і довжину кожного рядка. Третя програма запускає по черзі спочатку першу, а потім другу програму. Для другої програми має бути встановлений нижчий пріоритет ніж у інших програм.
3. Використовуючи функцію EnumProcesses, визначити кількість процесів, що виконуються, і ідентифікатори всіх процесів, що виконуються
BOOL WINAPI EnumProcesses(
DWORD* pProcessIds,
DWORD cb,
DWORD* pBytesReturned
);
де:
pProcessIds2 – масив ідентифікаторів процесу
cb - розмір масиву( в байтах);
pBytesReturned - кількість байтів у масиві-результаті;
4. Після визначення ідентифікатори процесів, використовуючи функцію OpenProcess, визначити дескриптори процесів, що виконуються;
HANDLE WINAPI OpenProcess(
DWORD dwDesiredAccess,
//PROCESS_QUERY_INFORMATION | PROCESS_VM_READ
BOOL bInheritHandle, // FALSE
DWORD dwProcessId // Ідентифікатор процесу
);
5. Для кожного дескриптора процесу визначити ім'я основного модуля, що відповідає дескриптору, використовуючи функцію:
DWORD WINAPI GetModuleBaseName(
HANDLE hProcess, // Дескриптор процесу
HMODULE hModule, //дескриптор модуля; якщо дорівнює 0, то ім'я .exe файлу
LPTSTR lpBaseName, // ім'я модуля
DWORD nSize // розмір буфера для імені модуля
);
6. Надрукувати таблицю ідентифікаторів процесів, дескрипторів і імен .exe файлів
7.4Зміст звіту
Звіт має містити:
Опис всіх використаних функцій WINAPI;
Складені макроси;
Тексти всіх складених програм;
Висновки по роботі з переліком вмінь, які отримані в результаті виконання лабораторної роботи.
7.5Контрольні запитання і завдання
Як необхідно підготувати структуру STARTUPІNFO перед створенням процесу?
Чим відрізняється запуск програм, що виконуються від запуску командного файлу?
Як довідатися встановлені зовнішні пристрої?
Як довідатися, які з файлів знову створені або модифікувалися?
Як можна довідатися, які процеси виконуються?
Як довідатися по ідентифікаторі процесу його дескриптор?
Як довідатися ім'я програми, що виконується по дескрипторові процесу?
8 Керування потоками
8.1Мета роботи
Вивчити методи керування потоками, які використовують загальні ресурси.
8.2Методичні вказівки з організації самостійної роботи студентів
При підготовці до лабораторної роботи необхідно повторити матеріал відповідних лекцій та ознайомитися з [1, c. 148 – 160, 3, c. 130 - 155].
Необхідно вивчити функції створення потоків: CreateThread та _beginthreadex:
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES SecurityAttributes, // Атрибути безпеки
DWORD StackSize, // Розмір стека
LPTHREAD_START_ROUTIN StartFunction, //Потокова функція
LPVOID ThreadParameter, // Параметр потокової функції
DWORD CreationFlags, // Прапорці створення потоку
LPDWORD ThreadId // Ідентифікатор потоку
);
uintptr_t _beginthreadex(
void *security, // Атрибути безпеки
unsigned stack_size, // Розмір стека
unsigned ( *start_address )( void * ), // Потокова функція
void *arglist, // Параметр потокової функції
unsigned initflag, // Прапорці створення потоку
unsigned *thrdaddr // Ідентифікатор потоку
);
