Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект лекцій із Системного програмування та...docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
786.31 Кб
Скачать

3. Синхронна робота з файлами

В Win32 перед ухваленням рішення про використання операцій синхронної роботи з файлами настійно рекомендується розглянути питання про можливості використання файлів, відображуваних на згадку.

Для того, щоб створити або відкрити файл використається функція

DWORD dwFlagsAndAttributes, II file attributes

HANDLE hTemplateFite II handle to file with attributes to copy

);

Параметр IpFileName визначає ім'я файлу.

Параметр dwDesiredAccess задає тип доступу до файлу. Можна визначити прапори GENERIC_READ й GENERIC_WRITE а так само їхню комбінацію для дозволу читання або запису у файл.

Параметр dwShareMode визначає режим спільного використання файлу різними процесами. Якщо цей параметр дорівнює нулю, то ніякий інший потік не зможе відкрити цей же файл. Прапори FILE_SHARE_READ й FILE_SHARE_WRITE а так само їхня комбінація дозволяють іншим потокам здійснювати доступ до файлу для читання або запису.

Параметр IpSecurityAttributes указує на структуру, що описує захист створюваного об'єкта ядра. Йому може бути привласнене значення NULL.

Параметр dwCreationDistribution визначає дії функції залежно від того, чи існує вже Параметр dwFlagsAndAttributes визначає атрибути файлу, якщо він створюється й задає режим роботи з файлом із зазначеним ім'ям.

Атрибути файлу можуть комбінуватися за винятком FILE_ATTRIBUTE_NORMAL, що завжди використається на самоті.

Разом з атрибутами можуть комбінуватися й прапори, що задають режим роботи з файлом.

Параметр hTemplateFile або дорівнює NULL, або задає описатель відкритого файлу. У другому випадку параметр dwFlagsAndAttributes ігнорується, а зазначений файл використається як шаблон, тобто використаються його прапори й атрибути.

У випадку удачі функція CreateFile повертає описатель відкритого файлу як об'єкта ядра. Істотно, що в противному випадку вона повертає не NULL, a INVALID_HANDLE_VALUE.

Для роботи з файлами використаються наступні функції

4. Асинхронна робота з файлами

Windows'95 не дозволяє організувати асинхронну роботу з файлами, але той же самий асинхронний механізм може використатися при роботі з послідовними портами, транспортерами й поштовими скриньками.

Для організації асинхронної роботи з файлами необхідно при виклику функції CreateFile установити прапор FILE_FLAG_OVERLAPPED у параметрі dwFlagsAndAttributes. Після цього функції ReadFile й WriteFile будуть працювати асинхронно, тобто тільки запускати операції уведення висновку й не очікувати їхнього завершення.

На відміну від синхронних операцій, при організації асинхронного читання (запису) необхідно явно вказати позицію, починаючи з якої виробляється операція. Це пов'язане з тим, що поточної позиції не існує, тому що кілька операцій читання й записи можуть вироблятися одночасно з різних позицій в одному файлі.

Параметри функції WriteFile аналогічні параметрам функції Read File.

Схем організації асинхронні читання й записи може бути кілька.

Перед запуском операції створюється об'єкт ядра «подія» (див. п. 6.2.5) і його описатель передається у функцію RedFile (WriteFile) як елемент hEvent параметра IpOverlapped. Програма, виконавши необхідні дії одночасно з операцією передачі даних, викликає одну з функцій очікування (напр. WaitForSingleObject), передаючи їй як параметр описатель події. Виконання програми при цьому припиняється до завершення операції виводу-вводу-висновку.

Подія не створюється. Як очікуваний об'єкт виступає сам файл. Його описатель передається у функцію WaitForSingleObject. Цей метод простий і коректний, але не дозволяє робити паралельно кілька операцій виводу-вводу-висновку з тим самим файлом.

«Тривожний» асинхронний висновок^-висновок-вивід-ввід-висновок. Схема побудована на використанні функцій ReadFileEx й WriteFileEx. Як додатковий параметр у ці функції передається адреса функції завершення, що буде викликатися щораз при завершенні операції виводу-вводу-висновку. Істотно, що ці функції виконуються в тім же самому потоці що й функції файлового уведення/висновку.

Лекція 17

Тема: Файлова структура NTFS