
- •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 Контрольні питання й завдання
- •Список використаних джерел
- •Додаток а Стандартні функції для введення – виведення даних для стандартних пристроїв. Функції для роботи з файлами.
5.2.3Визначення вільного місця на пристрої
Функція GetDiskFreeSpace визначає конфігурацію пристрою та вільне місце на ньому:
BOOL WINAPI GetDiskFreeSpace(
LPCTSTR lpRootPathName, // Пристрій
LPDWORD lpSectorsPerCluster, // Секторів в кластері
LPDWORD lpBytesPerSector, // Байт в секторі
LPDWORD lpNumberOfFreeClusters, //Кількість вільних кластерів
LPDWORD lpTotalNumberOfClusters //Загальна кількість кластерів
);
Нехай кількість секторів в кластері 8, тоді при розмірі сектору 512 максимальний розмір пристрою 232 * 23 * 29 = 244, тобто 16 терабайтів. Такий розмір не завжди достатній, тому є функція, яка дозволяє працювати з великими пристроями:
Функція GetDiskFreeSpaceEx:
BOOL WINAPI GetDiskFreeSpaceEx(
LPCTSTR lpDirectoryName, // Пристрій або каталог
PULARGE_INTEGER lpFreeBytesAvailable, //Доступних байтів
PULARGE_INTEGER lpTotalNumberOfBytes, //Загальна кількість байтів
PULARGE_INTEGER lpTotalNumberOfFreeBytes // Вільних байті
);
Ця функція не тільки збільшує допустимі розміри, але і дозволяє заміст всього пристрою задавати папку, а також враховувати квоти на дисковий простір.
5.3Порядок виконання лабораторної роботи
Визначить кількість пристроїв, які встановлені (функція GetLogicalDrives – кількість бітів, що дорівнюють 1 в полі результату);
Визначить імена встановлених пристроїв (функція GetLogicalDriveStrings);
Для кожного встановленого пристрою визначить його тип (функція GetDriveType);
Визначить вільний дисковий простір для усіх пристроїв (функція GetDiskFreeSpaceEx);
За допомогою функції GetVolumeInformation визначить серійний номер диску, його ім’я та ім’я файлової системи;
Реалізувати функцію копіювання файлу, яка спочатку перевіряє наявність необхідного диску і можливість виконання операції запису на нього, потім аналізує наявність необхідного вільного місця, і тільки потім виконує запис даних на диск. При читанні файлу та його записуванні виконувати шифрування (розшифрування) файлу з використанням операції складення по модулю 2 з серійним номером відповідного диску. Якщо файли на одному диску - шифрування – розшифрування не виконувати. Написати функцію для читання записів цього файлу.
5.4Контрольні запитання і завдання
Як визначити наявні пристрої для зберігання інформації. Яким чином можна узнати кількість таких пристроїв і імена кореневих каталогів для них.
Як узнати тип пристрою (дискета, жорсткий диск, CD, флеш, мережений диск)?
Як визначити максимальний розмір диску та розмір вільної пам’яті?
Як визначити серійний номер диску. Яку ще інформацію можна узнати за допомогою тієї ж функції?
6КЕРУВАННЯ РОЗПОДІЛОМ ПАМ'ЯТІ (WІNAPІ)
6.1Мета роботи
Вивчити функції для роботи з віртуальною та фізичною пам'яттю.
6.2Підготовка до роботи
При підготовці до роботи вивчити класи функцій для роботи з пам'яттю WINAPI:
інформаційні;
функції керування віртуальною та фізичною пам'яттю;
відображення файлів на пам'ять;
функції керування кучою
6.2.1Інформаційні функції
6.2.1.1Функція GetSystemInfo
Використовується для визначення системної інформації, а саме інформації по процесору та пам'яті
void WINAPI GetSystemInfo(LPSYSTEM_INFO lpSystemInfo);
де:
typedef struct _SYSTEM_INFO {
union {
DWORD dwOemId;
struct {
WORD wProcessorArchitecture;
WORD wReserved;
};
};
DWORD dwPageSize;
LPVOID lpMinimumApplicationAddress;
LPVOID lpMaximumApplicationAddress;
DWORD_PTR dwActiveProcessorMask;
DWORD dwNumberOfProcessors;
DWORD dwProcessorType;
DWORD dwAllocationGranularity;
WORD wProcessorLevel; WORD wProcessorRevision;
} SYSTEM_INFO;
Поля, які повязані з памяттю, виділені.