Similar presentations:
Системное ПО. Блокировки файлов
1. Системное ПО
Блокировки файлов2. Системное ПО
Совместный доступ кфайлам
dwDesiredAccess определяет желаемые права доступа к файлу
dwShareMode определяет способ совместного использования
файла с другими процессами
Файл не может быть открыт в случае конфликта
доступа
В случае конфликта функция CreateFile вернет
INVALID_HANDLE_VALUE
Более подробную информацию можно узнать с помощью
функции GetLastError
3. Системное ПО
Пример 1. Совместная работа с файломСовместный доступ к
файлам
Для теста запущено два
экземпляра программы
Оба экземпляра могут
работать с файлом, несмотря
на сообщение, полученное во
втором запуске
4. Системное ПО
Пример 2. Совместный доступ только для чтенияСовместный доступ к
файлам
Для теста запущено два
экземпляра программы
При запуске первого
экземпляра определен
совместный доступ только
для чтения
При запуске второго
произошел конфликт, так как
был запрошен доступ для
записи
5. Системное ПО
Пример 3. Различные режимы совместногодоступа
Процесс 1
Совместный доступ к
файлам
Процесс 2
Конфликта нет,
оба процесса
запрашивают
допустимые права
6. Системное ПО
Блокировка частифайла
Функция блокирует регион
файла. Если регион уже
заблокирован, ожидает
разблокировки
Константа для dwFlags
Описание
LOCKFILE_EXCLUSIVE_
LOCK
Полная блокировка. Иначе возможно чтение
LOCKFILE_FAIL_IMMEDI
ATELY
Функция возвращает управление
немедленно. Иначе ждет окончания
блокировки
7. Системное ПО
Блокировка части файлаПроцесс 1. Блокирует
байты 3-7 (с нулевого)
Процесс 2. Работает с
байтами 0-10
8. Системное ПО
Блокировка части файлаФлаг LOCKFILE_EXCLUSIVE_LOCK не
использовался. Возможно чтение
заблокированного участка, но невозможна
запись.
9. Системное ПО
Процесс 2. Работает сбайтами 0-10
Блокировка части файла
Процесс 2 ожидает
завершения процесса
1, и только затем
работает с файлом