Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab_2_RPZ.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
148 Кб
Скачать
☆

Теоретичні відомості

Типи даних API WIN32

API WIN32 оперує сукупністю простих та складених типів даних. Деякі типи являють собою перевизначення стандартних типів мови програмування Сі:

BOOL – логічний (значення TRUE та FALSE);

CHAR – символьний (1 байт);

BYTE – цілий беззнаковий (1 байт);

WORD – цілий беззнаковий (2 байти);

DWORD – цілий беззнаковий (4 байти);

FLOAT – дійсний;

INT, LONG – цілий знаковий (4 байти);

LONGLONG – цілий знаковий (8 байт);

SHORT – цілий знаковий (2 байти);

VOID – пустий;

LPSTR – покажчик на символьний рядок (char *);

LPCSTR – покажчик на константний символьний рядок (const char *);

LPTSTR – покажчик на символьний рядок, що сумісний з Unicode (char *);

LPCTSTR – покажчик на константний символьний рядок, що сумісний з Unicode

(const char *);

HANDLE – цілий знаковий (4 байти) для визначення дескриптору об’єкту.

Функції API WIN32 для роботи з директоріями

Створення директорії

BOOL CreateDirectory(

LPCTSTR lpszPath, // шлях з назвою директорії

LPSECURITY_ATTRIBUTES lpsa // покажчик на дескриптор безпеки (NULL)

);

Повертає значення TRUE в разі успішного виконання.

Видалення директорії

BOOL RemoveDerectory(

LPCTSTR lpszPath // шлях з назвою директорії

);

Повертає значення TRUE в разі успішного виконання.

Визначення поточної директорії

DWORD GetCurrentDirectory(

DWORD nCurDir, // довжина буферу для отримання назви директорії

LPTSTR lpszCurDir // буфер, який отримує назву директорії

);

Повертає кількість символів, що записані до буферу.

Перевизначення поточної директорії

BOOL SetCurrentDirectory(

LPCTSTR lpszCurDir // шлях з назвою нової директорії

);

Повертає значення TRUE в разі успішного виконання.

Функції API WIN32 для роботи з файлами

Створення та відкриття файлу

HANDLE CreateFile(

LPCTSTR lpszName, // назва файлу

DWORD fdwAccess, // режим доступу (бітові прапори GENERIC_READ

та GENERIC_WRITE)

DWORD fdwShareMode, // сумісний доступ (0)

LPSECURITY_ATTRIBUTES lpsa, // покажчик на дескриптор безпеки (NULL)

DWORD fdwCreate, // режим відкриття (табл. 18)

DWORD fdwAttrsAndFlags, // атрибути файлу (табл. 19)

HANDLE hTemplateFile // розширенні атрибути (NULL)

);

Повертає дескриптор відкритого файлу або, в разі неуспішного виконання, значення INVALID_HANDLE_VALUE.

Таблиця 18

Режим відкриття

Опис режиму

CREATE_ALWAYS

Створення нового файлу.

Якщо файл існує, його вміст видаляється

CREATE_NEW

Створення нового файлу

OPEN_ALWAYS

Відкриття існуючого файлу. Якщо файл не існує, він створюється

OPEN_ EXISTING

Відкриття існуючого файлу

TRUNCATE_ EXISTING

Відкриття існуючого файлу з видаленням його вмісту

Таблиця 19

Атрибути файлу

Опис призначення атрибута файлу

FILE_ATTRIBUTE_NORMAL

Без атрибутів

FILE_ATTRIBUTE_READONLY

Тільки для читання

FILE_ATTRIBUTE_HIDDEN

Прихований

FILE_ATTRIBUTE_SYSTEM

Системний

Закриття дескриптору об’єкта

BOOL CloseHandle(

HANDLE hObject // дескриптор об’єкта

);

Повертає значення TRUE в разі успішного виконання.

Читання з файлу

BOOL ReadFile(

HANDLE hFile, // дескриптор файлу

LPVOID lpBuffer, // покажчик на буфер, який отримує зчитані дані

DWORD nNumberOfBytesToRead, // кількість байт, що повинно бути зчитано з файлу

LPDWORD lpNumberOfBytesToRead, // покажчик на змінну, яка приймає кількість дійсно

зчитаних байт

LPOVERLAPPED lpOverlapped // покажчик на структуру OVERLAPPED (NULL)

);

Повертає значення TRUE в разі успішного виконання.

Запис до файлу

BOOL WriteFile(

HANDLE hFile, // дескриптор файлу

CONST VOID* lpBuffer, // покажчик на буфер з даними, що записуються

DWORD nNumberOfBytesToWrite, // кількість байт, що повинно бути записано до

файлу

LPDWORD lpNumberOfBytesToWrite, // покажчик на змінну, яка приймає кількість дійсно

записаних байт

LPOVERLAPPED lpOverlapped // покажчик на структуру OVERLAPPED (NULL)

);

Повертає значення TRUE в разі успішного виконання.

Видалення файлу

BOOL DeleteFile(

LPCTSTR lpszFileName // назва файлу

);

Повертає значення TRUE в разі успішного виконання.

Копіювання файлу

BOOL CopyFile(

LPSTSTR lpszExistingFile, // назва існуючого файлу

LPSTSTR lpszNewFile, // назва нового файлу

BOOL bCansel // прапор, який визначає дії при існуванні файлу з

назвою lpszNewFile (TRUE – файл не копіюється,

FALSE – файл перезаписується)

);

Повертає значення TRUE в разі успішного виконання.

Переміщення файлу або директорії

BOOL MoveFile(

LPSTSTR lpszExisting, // назва існуючого файлу або директорії

LPSTSTR lpszNew, // назва нового файлу або директорії

);

Повертає значення TRUE в разі успішного виконання.

Встановлення позиції покажчика читання/запису файлу

DWORD SetFilePointer(

HANDLE hFile, // дескриптор файлу

LONG lDictanceToMove, // кількість байт, на яке здійснюється переміщення

PLONG lpDistanceToMoveHigh, // покажчик на змінну, що містить старшу частину

значення зміщення (NULL)

DWORD dwMoveMetod // позиція зміщення (табл. 20)

);

Повертає значення нової позиції покажчика читання/запису файлу або, в разі невдачі, значення 0xFFFFFFFF.

Таблиця 20

Позиція зміщення

Опис позиції зміщення

FILE_BEGIN

Початок файлу

FILE_CURRENT

Поточна позиція покажчика у файлі

FILE_END

Кінець файлу

Визначення розміру файлу

DWORD GetFileSize(

HANDLE hFile, // дескриптор файлу

LPDWORD lpdwFileSizeHigh // покажчик на змінну, в яку повертається старша

частина значення розміру файлу (NULL)

);

Повертає молодшу частину значення розміру файлу або, в разі невдачі, значення 0xFFFFFFFF.

Пошук першого файлу або директорії, що відповідають шаблону пошуку

HANDLE FindFirstFile(

LPCTSTR lpszSearchFile, // шаблон пошуку або назва файлу

LPWIN32_FIND_DATA lpffd // покажчик на структуру WIN32_FIND_DATA, що

містить інформацію про знайдений файл або директорію

);

Повертає дескриптор пошуку, який використовується при подальшому пошуку файлів (директорій), або, в разі невдачі, INVALID_HANDLE_VALUE.

typedef struct _WIN32_FIND_DATA {

DWORD dwFileAttributes; // атрибути знайденого файлу

FILETIME ftCreationTime; // час створення файлу

FILETIME ftLastAccessTime; // час останнього доступу до файлу

FILETIME ftLastWriteTime; // час модифікації файлу

DWORD nFileSizeHigh; // старше слово значення розмір файлу

DWORD nFileSizeLow; // молодше слово значення розміру файлу

DWORD dwReserved0; // зарезервоване значення (не використовується)

DWORD dwReservsd1; // зарезервоване значення (не використовується)

TCHAR cFileName[MAX_PATH]; // назва файлу

TCHAR cAlternateFileName[14]; // назва файлу у форматі 8.3

} WIN32_FIND_DATA;

Продовження пошуку файлів або директорій, що відповідають шаблону пошуку

BOOL FindNextFile(

HANDLE hFindFile, // дескриптор пошуку, який повертається при

виклику функції FindFirstFile

LPWIN32_FIND_DATA lpffd // покажчик на структуру WIN32_FIND_DATA, що

містить інформацію про знайдений файл

);

Повертає значення TRUE в разі успішного виконання.

Закриття дескриптору пошуку

BOOL FindClose(

HANDLE hFindFile // дескриптор пошуку

);

Повертає значення TRUE в разі успішного виконання.

Отримання дати і часу створення, останнього модифікування і останнього доступу до файлу

BOOL GetFileTime (

HANDLE hFile, // дескриптор файлу

LPFILETIME lpftCreation, // покажчик на структуру FILETIME, яка отримує

дату і час створення файлу

LPFILETIME lpftLastAccess, // покажчик на структуру FILETIME, яка отримує

дату і час останнього доступу до файлу

LPFILETIME lpftLastWrite // покажчик на структуру FILETIME, яка отримує

дату і час останньої модифікації файлу

);

Повертає значення TRUE в разі успішного виконання.

Перетворення 64-разрядного формату часу в системний формат

BOOL FileTimeToSystemTime(

CONST FILETIME* lpftTime, // покажчик на структуру FILETIME, яка містить

64-разрядний формат часу

LPSYSTEMTIME stTime // покажчик на структуру SYSTEMTIME, яка

отримує час в системному форматі

);

Повертає значення TRUE в разі успішного виконання.

typedef struct ­_SYSTEMTIME {

WORD wYear; // поточний рік

WORD wMonth; // поточний місяць: 1 – січень, 2 – лютий і т.д.

WORD wDayOfWeek; // поточний день тижня: 0 – неділя, 1 – понеділок

і т.д.

WORD wDay; // поточний день місяця

WORD wHour; // поточна година

WORD wMinute; // поточна хвилина

WORD wSecond; // поточна секунда

WORD wMillisecond; // поточна мілісекунда

} SYSTEMTIME;

Визначення атрибутів файлу або директорії

DWORD GetFileAttributes(

LPCTSTR lpszFileName // назва файлу або директорії

);

Повертає атрибути файлу або, в разі невдачі, значення 0xFFFFFFFF.

Функції API WIN32 консольного введення/виведення

Отримання дескриптора стандартного пристрою введення/ виведення

HANDLE GetStdHandle(

DWORD nStdHandle // значення, яке специфікує стандартний пристрій

(табл.21)

);

Повертає дескриптор стандартного пристрою або, в разі невдачі, значення INVALID_HANDLE_VALUE.

Таблиця 21

Значення

Опис значення

STD_INPUT_HANDLE

Стандартний пристрій введення

STD_OUTPUT_HANDLE

Стандартний пристрій виведення

STD_ERROR_HANDLE

Стандартний пристрій виведення повідомлень про помилки

Читання із буферу введення консолі (введення)

BOOL ReadConsole(

HANDLE hConsoleInput, // дескриптор буферу введення консолі

LPVOID lpBuffer, // покажчик на буфер, до якого записуються дані,

що зчитані з буферу введення консолі

DWORD nNumberOfCharsToRead, // кількість символів для читання

LPDWORD lpNumberOfCharsToRead, // покажчик на змінну, яка отримує кількість

зчитаних символів

LPVOID lpReserved // зарезервоване значення (NULL)

);

Повертає значення TRUE в разі успішного виконання.

Запис до буферу екрана консолі (виведення)

BOOL WriteConsole(

HANDLE hConsoleOutput, // дескриптор буфера екрана консолі

CONST VOID* lpBuffer, // покажчик на буфер, який містить символи, що

виводяться

DWORD nNumberOfCharsToWrite, // кількість символів, що будуть виводитися

LPDWORD lpNumberOfCharsToWrite, // покажчик на змінну, яка отримує кількість

символів, що виведені

LPVOID lpReserved // зарезервоване значення (NULL)

);

Повертає значення TRUE в разі успішного виконання.

Функції обробки текстових рядків

Конкатенація рядків символів

LPTSTR lstrcat(

LPTSTR lpString1, // покажчик на буфер, в якому міститься перший

рядок і до якого заноситься результат

конкатенації

LPCTSTR lpString2 // покажчик на другий рядок, що додається до

першого рядка

);

Повертає покажчик на буфер або, в разі невдачі, значення NULL.

Копіювання рядка символів до буферу

LPTSTR lstrcpy(

LPTSTR lpString1, // покажчик на буфер, до якого копіюється рядок

LPCTSTR lpString2 // покажчик на рядок, що копіюється

);

Повертає покажчик на буфер або, в разі невдачі, значення NULL.

Визначення довжини рядка символів

int lstrlen(

LPCTSTR lpString // покажчик на рядок символів

);

Повертає довжину рядка в байтах (ASCII – рядок ) або в символах (Unicode – рядок).

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]