- •Лабораторна робота 1 Тема: Процеси і потоки
- •Створення процесу в win32 api
- •Створення потоку в win32 api
- •Лабораторна робота 2 Тема: Планування і взаємодія процесів і потоків
- •1.Дослідити роботу програми.
- •Приклад синхронізації потоків за допомогою об’єкта critical_section
- •Лабораторна робота 3 Тема: Практична реалізація багатопотоковості
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого. Синхронізація потоків, які виконуються в різних процесах за допомогою м’ютекса
- •Лабораторна робота 4 Тема: Керування оперативною пам’яттю
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого. Ініціалізація і копіювання блоків віртуальної пам’яті
- •Лабораторна робота 5 Тема: Файлові системи і операції з файлами і каталогами
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого. Функції Win32api для файлових операцій
- •Лабораторна робота 6 (ч.1) Тема: Керування пристроями вводу-виводу
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого. Отримання інформації про перший фізичний диск в системі за допомогою функції DeviceIoControl
- •Лабораторна робота 6 (ч.2) Тема: Створення та використання dll
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого.
- •Створення модальних форм розміщених у dll
- •Лабораторна робота 7 Тема: Взаємодія з користувачем в Windows xp
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого. Основи створення gui в Win32api
- •Лабораторна робота 8 Тема: Мережні засоби операційних систем
- •3.За завданням викладача розробити власний проект на основі існуючого.
- •Лабораторна робота 9 Тема: Безпека даних в ос
- •1.Дослідити роботу програми.
- •2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
- •3.За завданням викладача розробити власний проект на основі існуючого. Додання елементів в список вибіркового керування доступом (dacl) файла або каталога
Лабораторна робота 3 Тема: Практична реалізація багатопотоковості
Завдання:
1.Дослідити роботу програми.
2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
3.За завданням викладача розробити власний проект на основі існуючого. Синхронізація потоків, які виконуються в різних процесах за допомогою м’ютекса
CreateMutex.cpp
#include <windows.h>
#include <iostream.h>
int main()
{
HANDLE hMutex;
char lpszAppName[] = "C:\\ConsoleProcess.exe";
STARTUPINFO si;
PROCESS_INFORMATION pi;
// создаем мьютекс
hMutex = CreateMutex(NULL, FALSE, "DemoMutex");
if (hMutex == NULL)
{
cout << "Create mutex failed." << endl;
cout << "Press any key to exit." << endl;
cin.get();
return GetLastError();
}
ZeroMemory(&si, sizeof(STARTUPINFO));
si.cb = sizeof(STARTUPINFO);
// создаем новый консольный процесс
if (!CreateProcess(lpszAppName, NULL, NULL, NULL, FALSE,
NULL, NULL, NULL, &si, &pi))
{
cout << "The new process is not created." << endl;
cout << "Press any key to exit." << endl;
cin.get();
return GetLastError();
}
// выводим на экран строки
for (int j = 0; j < 10; ++j)
{
// захватываем мьютекс
WaitForSingleObject(hMutex, INFINITE);
for (int i = 0; i < 10; i++)
{
cout << j << ' ' << flush;
Sleep(10);
}
cout << endl;
// освобождаем мьютекс
ReleaseMutex(hMutex);
}
// закрываем дескриптор мьютекса
CloseHandle(hMutex);
// ждем пока дочерний процесс закончит работу
WaitForSingleObject(pi.hProcess, INFINITE);
// закрываем дескрипторы дочернего процесса в текущем процессе
CloseHandle(pi.hThread);
CloseHandle(pi.hProcess);
return 0;
}
ConsoleProcess.cpp
#include <windows.h>
#include <iostream.h>
int main()
{
HANDLE hMutex;
int i,j;
// открываем мьютекс
hMutex = OpenMutex(SYNCHRONIZE, FALSE, "DemoMutex");
if (hMutex == NULL)
{
cout << "Open mutex failed." << endl;
cout << "Press any key to exit." << endl;
cin.get();
return GetLastError();
}
for (j = 10; j < 20; j++)
{
// захватываем мьютекс
WaitForSingleObject(hMutex, INFINITE);
for (i = 0; i < 10; i++)
{
cout << j << ' ' << flush;
Sleep(5);
}
cout << endl;
// освобождаем мьютекс
ReleaseMutex(hMutex);
}
// закрываем дескриптор объекта
CloseHandle(hMutex);
return 0;
}
Лабораторна робота 4 Тема: Керування оперативною пам’яттю
Завдання:
1.Дослідити роботу програми.
2.Описати документацію на типи даних, структури та функції win32 api, які використовуються в програмі.
3.За завданням викладача розробити власний проект на основі існуючого. Ініціалізація і копіювання блоків віртуальної пам’яті
#include <windows.h>
#include <iostream.h>
int main()
{
BYTE *a, *b; // указатели на блоки памяти
const int size = 1000; // размерность массива
// распределяем виртуальную память
a = (BYTE*)VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE);
if(!a)
{
cout << "Virtual allocation failed." << endl;
return GetLastError();
}
b = (BYTE*)VirtualAlloc(NULL, size, MEM_COMMIT, PAGE_READWRITE);
if(!b)
{
cout << "Virtual allocation failed." << endl;
return GetLastError();
}
// инициализируем символом X
FillMemory(a, size, 'X');
// копируем блок A в блок B
CopyMemory(b, a, size);
// распечатываем результат
cout << "b[10] = " << b[10] << endl;
// освобождаем виртуальную память
if (!VirtualFree(a, 0, MEM_RELEASE))
{
cout << "Memory release failed." << endl;
return GetLastError();
}
return 0;
}
