
- •"Програмне забезпечення автоматизованих систем"
- •1. Оперативна пам'ять
- •2. Регістри
- •3. Прапори
- •1. Переходи
- •2. Безумовні переходи
- •3. Умовні переходи
- •4. Команди керування циклом
- •1. Подання даних арифметичні операції
- •2. Цілі числа без знака
- •3. Цілі числа зі знаком
- •4. Особливості виконання арифметичних операцій
- •5. Подання символів і рядків
- •6. Подання адрес
- •7. Директиви визначення даних
- •1. Структура команд. Виконавчі адреси
- •2. Формати команд
- •3. Запис команд в masm
- •1. Сегменти пам’яті, сегментні регістри
- •2. Сегментні регістри по домовленості
- •3. Сегментування, базування й індексування адрес
- •4. Програмні сегменти. Директива assume
- •5. Початкове завантаження сегментних регістрів
- •6. Посилання вперед
- •1. Строкові операції
- •1. Стек
- •2. Основні стекові команди
- •1. Організація процедур та переривань
- •2. Передача параметрів процедурам через регістри, через стек, через таблиці, через глобальні області
- •3. Передача параметрів по ссылке
- •4. Передача параметрів по повернутому значенню
- •5. Передача параметрів в стеку
- •6. Локальні змінні
- •1. Процеси і потоки
- •1.1 Розподіл часу між потоками
- •1.2 Динамічна зміна рівня пріоритету потоку
- •2. Робота із процесами й потоками в Win32 api
- •1. Адресний простір процесу
- •2. Керування віртуальною пам'яттю. Vmm
- •3. Файли даних, що проектуються на згадку
- •4. Взаємодія процесів через загальну область даних. Когерентність
- •5. Купи
- •1. Визначення вікна. Компоненти й параметри вікон
- •2. Клас вікна
- •3. Ієрархія вікон
- •1. Обмін даними між процесами
- •2. Вилучений виклик процедур (rpc - Remote Procedure Call)
- •3. Синхронізація потоків
- •1. Загальний порядок обробки виключень
- •2. Фільтри й оброблювачі виключень
- •1. Загальна структура системного реєстру
- •2. Робота додатків із системним реєстром
- •1. Файлові структури
- •2. Робота з томами й каталогами
- •3. Синхронна робота з файлами
- •4. Асинхронна робота з файлами
- •1. Системні файли ntfs
- •2. Master File Table (mft)
- •3. Цілісність даних і здатність до самовідновлення.
- •4. Організація й керування дисками
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