Закрытие файла
Закрытие файла
В конце работы с файлом его нужно закрыть. Но это действие не является обязательным, так как функция 4сп, которая завершает выполнение программы, в числе прочих действий выполняет и закрытие всех файлов. Вход: АН = 3Eh; BX = дескриптор файла, полученный при его открытии. Выход: CF = 0 — АХ = не определен; CF = 1 — АХ = код ошибки: 6 — недопустимый
дескриптор.
Во время закрытия файла выполняются все незаконченные операции записи на диск в элементе каталога, соответствующего файлу, модифицируются различные поля, в том числе поля времени и даты устанавливаются в текущее время.
;prg07_05.asm - программа демонстрации закрытия файла функцией 3Eh.
:.........
.data
handle dw 0 :дескриптор файла filename db 'my_file.txt',О point fname dd filename
;......:
.code :*......
хогсх.сх :атрибуты файла - обычный файл
Ids dx.point_fnanve :фориируем указатель на имя файла
movah.5bh :номер функции DOS
int 21h :открываем файл
jnc ml ;обойдем открытие файла
moval.02h :режим доступа
1movah.3dh -.номер функции DOS
int 21h :открываем файл
jc exit :переход в случае ошибки
ml: :действия при успешном открытии файла:
mov handle.ах ;сохраним дескриптор файла
т2: ;закрываем файл:
В случае задания имени, как в примере выше, файл будет создан в корневом каталоге текущего диска. Для того чтобы разместить файл в конкретном каталоге, необходимо указать полный путь к нему с завершающим символом ' \' и 13 нулевыми байтами на конце, например:
filename db 'e:\asm_on_a\'.13 dup(0),0
Закрытие файла
Закрытие файла производится функцией Cl oseHandl e:
B00L C1oseHandle( HANDLE hObject );
Функция имеет один параметр размером в двойное слово — дескриптор, полученный при открытии файла функцией CreateFile.
При удачном завершении функция возвращает ненулевое значение в регистре ЕАХ. В случае неудачи функция возвращает в регистре ЕАХ значение NULL.
Win32 поддерживает несколько функций для часто используемых операций над файлами: копирование, перемещение и переименование файлов.