Головна |
Основними операціями з файлами є: створення, відкриття, читання, запис, видалення та ін. В ряді випадків виникає необхідність паралельного доступу до файлових об'єктів з різних потоків виконання. У цьому випадку виникає необхідність синхронізації дій потоків.
Перш ніж файл буде використовуватися його необхідно відкрити або створити. Створити (відкрити) файл можна системним викликом CreateFile.
синтаксис:
HANDLE WINAPI CreateFile (
LPCTSTR lpFileName,
DWORD dwDesiredAccess,
DWORD dwShareMode,
LPSECURITY_ATTRIBUTES lpSecurityAttributes,
DWORD dwCreationDisposition,
DWORD dwFlagsAndAttributes,
HANDLE hTemplateFile
);
параметри:
lpFileName [in] Файл або пристрою, який буде створено чи відкрито.
dwDesiredAccess [in], який запитується режим доступу: читання (GENERIC_READ), запис (GENERIC_WRITE), читання-запис (GENERIC_READ | GENERIC_WRITE).
dwShareMode [in] Визначає режим поділу файлу між потоками виконання (таблиця 4.1), може встановлюватися як комбінація по АБО.
Таблиця 4.1 - Допустимі режими розділення доступу
значення | опис |
0x00000000 | Тільки створив (відкрив) процес може отримати доступ до файлу. |
FILE_SHARE_DELETE0x00000004 | Дозволятиме відображення файлу з метою видалення процесом відмінним від процесу відкрив файл. |
FILE_SHARE_READ0x00000001 | Дозволятиме відображення файлу з метою читання процесом відмінним від процесу відкрив файл. |
FILE_SHARE_WRITE0x00000002 | Дозволятиме відображення файлу з метою запису процесом відмінним від процесу відкрив файл. |
lpSecurityAttributes [in, optional] Адреса структури типу SECURITY_ATTRIBUTES, яка визначає атрибути захисту. Цей параметр може бути NULL.
dwCreationDisposition [in] Дія з файлом при його існування або відсутності.
Таблиця 4.2 - Допустимі дії з файлом
значення | опис |
CREATE_ALWAYS | Створює новий файл (завжди). Якщо файл існує і можлива запис, то він перезаписується, функція завершується успіхом і в останню помилку записується код ERROR_ALREADY_EXISTS (183). |
CREATE_NEW | Створює новий файл, якщо він не існує. В іншому випадку виклик провалюється і в останню помилку записується код ERROR_ALREADY_EXISTS (183). |
OPEN_ALWAYS | Відкриває існуючий файл (завжди). Якщо файл існує, то він відкривається, функція завершується успіхом і в останню помилку записується код ERROR_ALREADY_EXISTS (183). Якщо файл не існує, то він створюється. |
OPEN_EXISTING | Відкриває існуючий файл, тільки якщо файл існує. В іншому випадку виклик провалюється і в останню помилку записується код ERROR_FILE_NOT_FOUND (2). |
dwFlagsAndAttributes [in] Прапори і атрибути файлу. Атрибути залежать від файлової системи. У більшості випадків достатньо вказати FILE_ATTRIBUTE_NORMAL. Атрибути можуть бути в будь-якій комбінації по АБО з прапорами. Прапори визначають розширення операцій введення-виведення з файлом, такі як: режим кешування, синхронний асинхронний ввід-висновок і ін. Для асинхронного доступу до файлу повинен бути встановлений прапор FILE_FLAG_OVERLAPPED.
hTemplateFile [in, optional] Дескриптор тимчасового файлу. Даний параметр може бути NULL.
Значення, що повертається дескриптор файлу, пристрої, іменованого каналу або поштового слота. Якщо виклик провалений, то повертається значення INVALID_HANDLE_VALUE.
Запис в файл здійснюється системним викликом WriteFile.
синтаксис:
Завдання до виконання. | Про стандарт
Огляд теми роботи | Структура віконного програми | Завдання до лабораторної роботи | Огляд теми роботи | практичні аспекти | Завдання на лабораторну роботу | Огляд теми роботи |