
- •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.4Контрольні питання и завдання
- •5.2.2Інформація про файлову систему пристрою
- •5.2.3Визначення вільного місця на пристрої
- •5.3Порядок виконання лабораторної роботи
- •5.4Контрольні запитання і завдання
- •6.2.1.2Функція GlobalMemoryStatusEx
- •6.2.1.3Функція VirtualQueryEx
- •6.2.2Функції для керування віртуальною та фізичною пам’яттю
- •6.2.2.1Функція VirtualAllocEx
- •6.2.2.2Функція VirtualFree
- •6.2.2.3Функція VirtualProtectEx
- •6.2.3.3Функція MapViewOfFile
- •6.2.3.4Функція UnmapViewOfFile
- •6.2.3.5Функція CloseHandle
- •6.3Завдання до лабораторної роботи
- •6.5Контрольні питання й завдання
- •7Планування процесів
- •7.1Мета роботи
- •7.2 Підготовка до роботи і порядок її виконання
- •8.3Порядок виконання лабораторної роботи
- •8.5Контрольні запитання і завдання
- •9 Керування потоками
- •9.1Мета роботи
- •9.2Підготовка до роботи і порядок її виконання
- •9.4Контрольні питання й завдання
- •10 Синхронізація процесів і потоків
- •10.1Мета роботи
- •10.2Підготовка до роботи і порядок її виконання
- •10.4 Контрольні питання й завдання
- •Список використаних джерел
- •Додаток а Стандартні функції для введення – виведення даних для стандартних пристроїв. Функції для роботи з файлами.
6.2.2.3Функція VirtualProtectEx
Використовується, якщо треба змінити рівень доступу до памяті, який було призначено при виділенні. Можно змінити рівень доступу не для всього, а для частини виділеного регіону.
BOOL WINAPI VirtualProtectEx(
__in HANDLE hProcess,
__in LPVOID lpAddress,
__in SIZE_T dwSize,
__in DWORD flNewProtect,
__out PDWORD lpflOldProtect
);
Де:
hProcess – дескриптор процесу;
lpAddress – адреса
dwSize – розмір;
flNewProtect – новий рівень доступу;
lpflOldProtect – старий рівень доступу.
6.2.2.4Функція VirtualLock і VirtualUnlock
Призначеня для запобіганння запису критичних даних на диск .
BOOL WINAPI VirtualLock(
__in LPVOID lpAddress,
__in SIZE_T dwSize
);
BOOL WINAPI VirtualUnlock(
__in LPVOID lpAddress,
__in SIZE_T dwSize
);
6.2.3Функції для відображення файлів на пам'ять
Використовуються, якщо необхідно:
1 записи файлу обробляти в довільному порядку;
2 Один і той же файл використовується різними програмами
3 Декілька програм використовують загальну пам'ять
6.2.3.1Функція CreateFile
Використовується для отримання інформації про файл, а саме, де розташован, які права доступу, розмір
6.2.3.2Функція CreateFileMapping
Використовується для виділення віртуальної пам'яті (побудови відповідних записів в катадлзі та таблицях сторінок)
HANDLE WINAPI CreateFileMapping(
__in HANDLE hFile,
__in LPSECURITY_ATTRIBUTES lpAttributes,
__in DWORD flProtect,
__in DWORD dwMaximumSizeHigh,
__in DWORD dwMaximumSizeLow,
__in LPCTSTR lpName
);
Де:
hFile – дескриптор відповідного файлу, якщо виділяється загальна пам'ять, то задається INVALID_HANDLE_VALUE;
lpAttributes – параметри безпеки (0);
flProtect – режим доступу, задається константами
PAGE_READONLY, PAGE_READWRITE, PAGE_WRITECOPY
PAGE_EXECUTE_READ PAGE_EXECUTE_READWRITE
dwMaximumSizeHigh, dwMaximumSizeLow – максимальний розмір, для якого треба виділяти віртуальну пам'ять.
lpName – ім'я віжповідного об'єкту ядра.
6.2.3.3Функція MapViewOfFile
Выполняется выделение физической памяти и чтение файла в эту память.
LPVOID WINAPI MapViewOfFileEx(
__in HANDLE hFileMappingObject,
__in DWORD dwDesiredAccess,
__in DWORD dwFileOffsetHigh,
__in DWORD dwFileOffsetLow,
__in SIZE_T dwNumberOfBytesToMap,
__in LPVOID lpBaseAddress
);
Де:
hFileMappingObject – дескриптор відображеного обєкту;
dwDesiredAccess – режим доступу до памяті, задається константами:
FILE_MAP_ALL_ACCESS FILE_MAP_COPY
FILE_MAP_EXECUTE FILE_MAP_READ FILE_MAP_WRITE
dwFileOffsetHigh, dwFileOffsetLow – зміщення по відношенню до початку файлу;
dwNumberOfBytesToMap – кількість байтів, які треба відобразити;
lpBaseAddress – адреса памяті, яку використовувати для відображення (краще 0!!!)
Після цієї функції можна використовувади дані з памяті
6.2.3.4Функція UnmapViewOfFile
Визволяє фізичну пам'ять
BOOL WINAPI UnmapViewOfFile(LPCVOID lpBaseAddress);
lpBaseAddress – адреса, яку повернула функція MapViewOfFileEx