Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Последние темы форума

Показать новые сообщения »

Почтовая рассылка

Подписчиков: 11642
Последний выпуск: 19.06.2015

DOS Fn 5cH: блокировать/разблокировать доступ к файлу

Вход

  • AH = 5cH DOS 3.0+
  • AL = подфункция: 0 = заблокировать область файла
  • = 1 = разблокировать ранее захваченную область
  • BX = описатель файла (handle)
  • CX:DX = смещение ((CX * 65536) + DX) от начала файла
  • SI:DI = длина блокируемой области ((SI * 65536) + DI) байт

Выход

  • AX = код ошибки если CF установлен

Описание:

блокирует или освобождает доступ к участку файла, идентифицируемого описателем в BX. область файла, начинающаяся по логическому смещению CX:DX и имеющая длину SI:DI, блокируется (захватывается) или разблокируется (освобождается). смещение и длина обязательны. Разделение файлов ДОЛЖНО быть активизировано (командой SHARE), иначе функция вернет код ошибки "неверный номер функции." Блокировка действует на операции чтения, записи и открытия со стороны порожденного или конкурирующего процесса. при попытке такого доступа (и режиме доступа , определенном при OPEN как "режим разделения", который запрещает такой доступ), DOS отвергает операцию через вызов INT 24H (обработчик критических ошибок) после трех попыток. DOS при этом выдает сообщение "Abort, Retry, Ignore". Рекомендуемое действие - НЕ пытаться читать файл и ожидать кода ошибки. Вместо этого попытайтесь заблокировать область и действуйте в соответствии с кодом возврата. это позволяет избежать довольно неустойчивого состояния DOS, связанного с выполнением INT 24H. Блокировка за концом файла не является ошибкой. Вы можете захватить весь файл, задав CX=0, DX=0, SI=0ffffH, DI=0ffffH и AL=0. при освобождении, смещение и длина участка должны точно совпадать со смещением и длиной захваченного участка.

Замечания:

Дублирование описателя через 45H или 46H дублирует и блокировки. Даже если во время OPEN выбран режим доступа Inherit, механизм блокировки не даст никаких привилегий доступа порожденным процессам, созданным функцией 4bH EXEC (они трактуются как отдельные). Важно, чтобы все блокировки файла были сняты до завершения программы. если вы используете блокировку, особо отслеживайте вызовы INT 23H (выход Ctrl-Break) и INT 24H (выход по критической ошибке), чтобы снять блокировки до действительного завершения программы. Рекомендуется освобождать блокировки как можно скорее. всегда блокируйте, обрабатывайте файл и освобождайте блокировку одной операцией.

Версии:

доступна, начиная с DOS 3.0

Оставить комментарий

Комментарий:
можно использовать BB-коды
Максимальная длина комментария - 4000 символов.
 
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог