- •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.3Створення статичних бібліотек
- •2.2.2Загальна характеристика динамічних бібліотек
- •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.1.2Функція GlobalMemoryStatusEx
Визначає стан усіх типів пам’яті, а саме. скільки є всього, скільки доступно, і який процент зайнято
BOOL WINAPI GlobalMemoryStatusEx(LPMEMORYSTATUSEX lpBuffer);
Структура MEMORYSTATUSEX:
typedef struct _MEMORYSTATUSEX {
DWORD dwLength;
DWORD dwMemoryLoad;
DWORDLONG ullTotalPhys;
DWORDLONG ullAvailPhys;
DWORDLONG ullTotalPageFile;
DWORDLONG ullAvailPageFile;
DWORDLONG ullTotalVirtual;
DWORDLONG ullAvailVirtual;
DWORDLONG ullAvailExtendedVirtual;
} MEMORYSTATUSEX, *LPMEMORYSTATUSEX;
В цій структурі поле dwLength означає розмір структури з даними, його треба задати перед викликом функції GlobalMemoryStatusEx
6.2.1.3Функція VirtualQueryEx
Визначає стан адресного простору для заданого процесу
SIZE_T WINAPI VirtualQueryEx(
HANDLE hProcess,
LPCVOID lpAddress,
PMEMORY_BASIC_INFORMATION lpBuffer,
SIZE_T dwLength
);
Де:
HANDLE hProcess – дескриптор процесу, для поточноог процесу можна використовувати функції GetCurrentProcess
LPCVOID lpAddress – адреса памяті, стан якої аналізується;
MEMORY_BASIC_INFORMATION lpBuffer – структура, куди записується результати аналізу;
SIZE_T dwLength – розмір структури з результатами.
Структура MEMORY_BASIC_INFORMATION
typedef struct _MEMORY_BASIC_INFORMATION
{
PVOID BaseAddress;
PVOID AllocationBase;
DWORD AllocationProtect;
SIZE_T RegionSize;
DWORD State;
DWORD Protect;
DWORD Type;
}MEMORY_BASIC_INFORMATION, *PMEMORY_BASIC_INFORMATION;
Де:
BaseAddress – найближча адреса на границі сторінки;
AllocationBase – адреса початку регіону;
AllocationProtect – права доступу, які призначені при виділенні пам’яті, задаються константами:
PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY, PAGE_NOACCESS, PAGE_READONLY, PAGE_READWRITE, PAGE_WRITECOPY
RegionSize – розмір регіону;
State, стан регіону, задається константами:
MEM_COMMIT – фізична пам’ять;
MEM_RESERVE – віртуальна пам’ять;
MEM_FREE – вільна пам’ять;
Protect – реальні права доступу, задаються як для поля AllocationProtect.;
Type – задається константами:
MEM_IMAGE MEM_MAPPED MEM_PRIVATE
6.2.2Функції для керування віртуальною та фізичною пам’яттю
6.2.2.1Функція VirtualAllocEx
Використовується для виділення памяті заданого типу або перепризначення типу пам’яті
LPVOID WINAPI VirtualAllocEx(
__in HANDLE hProcess,
__in LPVOID lpAddress,
__in SIZE_T dwSize,
__in DWORD flAllocationType,
__in DWORD flProtect
);
Де:
hProcess – дескриптор процесу;
lpAddress – адреса пам'яті, якщо змінюється її тип, 0 якщо пам'ять виділяється:
dwSize – потрібний розмір (байт);
flAllocationType – тип пам'яті; задається константами:
MEM_COMMIT; MEM_RESERVE; MEM_RESET
flProtect – способ доступу, задається константами:
PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY, PAGE_NOACCESS, PAGE_READONLY, PAGE_READWRITE, PAGE_WRITECOPY
6.2.2.2Функція VirtualFree
BOOL WINAPI VirtualFreeEx(
__in HANDLE hProcess,
__in LPVOID lpAddress,
__in SIZE_T dwSize,
__in DWORD dwFreeType
);
Де:
hProcess – дескриптор процесу;
lpAddress – адреса пам'яті, що визволяється;
dwSize – розмір пам'яті, 0. якщо уся пам'ять.
dwFreeType – тип визволення, задається константами:
MEM_DECOMMIT MEM_RELEASE
