Иллюстрированный самоучитель по задачам и примерам Assembler

Создание, открытие, закрытие и удаление файла

Перемещение файла

Для перемещение файла Win32 содержит две функции MoveFile и MoveFilеЕх:

BOOL MoveFile(LPCTSTR lpExistingFileName, LPCTSTR lpNewFileNam):
BOOL MoveFileEx(LPCTSTR TpExistingFileName. LPCTSTR ipNewFileName. DWORD dwFlags):

Параметрами функции MoveFile являются указатели на ASCIIZ-строки с именами файла-источника и файла-приемника. Функция MoveFilеЕх обладает дополнительными свойствами благодаря наличию третьего параметра, который определяет особенности перемещения:

  • MOVEFILE REPLACE_EXISTING=00000001h – при существовании целевого файла он замещается содержимым файла-источника;
  • MOVEFILE_COPY_AL10WED=00000002h – если не указывать специально, то функция MoveFilеЕх не перемещает файлы на другой диск, а если перемещение требуется, необходимо устанавливать этот флаг;.
  • MOVEFILE_DELAY_UNTIL_REBOOT=00000004h – (только для Windows NT и выше) файл-источник не удаляется до перезагрузки системы;
  • MOVEFILE_WRITE_THROUGH=00000008h – установка флага гарантирует, что возврат из функции не произойдет до фактического перемещения и удаления файла.

Кроме этого, функция MoveFilеЕх допускает указание на месте второго параметра значения NULL, тем самым моделируя вызов функции DeleteFiIe.

При удачном завершении функции MoveFile и MoveFilеЕх возвращают ненулевое значение в регистре ЕАХ. В случае неудачи функции возвращают в регистре ЕАХ значение NULL.

:prg07_30.asm – Win32-nporpaммa консольного приложения для исследования
:работы функции MoveFile(Ex) API Win32.
:
.data
TitleText db 'Перемещение файлов в Win32'.О
s_file db "p",0;имя входного файла
d_file db "pi".0:имя выходного файла
.code
:………
push offset d_file
push offset s_file
call MoveFileA
cmp eax.O
jz exit:выход в случае неудачи

Переименование файла

Специальной функции для переименования файла нет, так как она и не нужна – перемещение файла в пределах одного каталога по сути и является его переименованием.

Удаление файла

Для удаления файла применяется функция DeleteFile:

BOOL DeleteFile(LPCTSTR TpFileName);

У нее единственный параметр – указатель на ASCIIZ-строку с именем (путем) удаляемого файла. Перед удалением файл необходимо закрыть, хотя в некоторых версиях Windows это не является обязательным.

При удачном завершении функция возвращает ненулевое значение в регистре ЕАХ. В случае неудачи функция возвращает в регистре ЕАХ значение NULL.

Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.