Crearea, deschiderea, închiderea și ștergerea unui program de fișiere, lecții și exemple

Capitolul 7. Lucrul cu fișierele din programele de asamblare

Creați, deschideți, închideți și ștergeți un fișier

Crearea și deschiderea unui fișier în Win32 se face printr-o singură funcție CreateFile. MANUAL CreateFi1eCLPCTSTR ipFileName, DWORD dwDesiredAccess. DWORD dwShareMode. LPSECURITY_ATTRIBUTES ipSecurityAttributes, DWORD dwCreationDistribution, DWORD dwFlagsAndAttributes. HANDLE hTemplateFile):
Parametrii acestei funcții au dimensiunea unui cuvânt dublu. Scopul lor este următorul (parametrii sunt descriși în ordinea opusă scrierii lor pe teanc):

Dacă este reușită, funcția returnează un nou descriptor de fișier în registrul EAX. Dacă funcția eșuează, funcția returnează NULL în registrul EAX.

Dacă este reușită, funcția returnează o valoare diferită de zero în registrul EAX. Dacă funcția eșuează, funcția returnează NULL în registrul EAX.

Pentru a muta un fișier, Win32 conține două funcții: MoveFile și MoveFi 1 eEx:
BOOL MoveFile (LPCTSTR lpExistingFileName, LPCTSTR lpNewFileNam):
BOOL MoveFileEx (LPCTSTR TpExistingFileName.LPCTSTR ipNewFileName.DWORD dwFlags):
Parametrii funcției MoveFile sunt indicatori ai șirurilor ASCIIZ cu numele fișierului sursă și fișierul destinație. Funcția MoveFi 1 eEx are proprietăți suplimentare datorită prezenței celui de-al treilea parametru, care determină caracteristicile mișcării:

În plus, funcția MoveFi 1 eEx permite localizarea celui de-al doilea parametru pentru a indica valoarea NULL, simulând astfel apelul funcției Del eteFi Ie.
Dacă funcția MoveFile și MoveFi 1 este finalizată cu succes, eEx-ul său returnează o valoare diferită de zero în registrul EAX. Dacă funcția eșuează, funcția returnează o valoare NULL în registrul EAX.

prg07_30.asm - aplicația Win32-nporpaMMa pentru cercetare: funcția de lucru MoveFile (Ex) API Win32.
.
.date
TitleText db 'Mutarea fișierelor în Win32'.On
s_file db "p", 0; numele fișierului de intrare
d_file db "pi" .0: numele fișierului de ieșire
.cod
.
împingeți offset d_file
împingeți offset s_file
apelați MoveFileA
cmp eax.O
ieșire jz: ieșire în caz de eșec

Nu există o funcție specială pentru redenumirea unui fișier, deoarece nu este necesară - mutarea unui fișier într-un singur director este esențial și redenumirea acestuia.

Pentru a șterge un fișier, utilizați funcția Del eteFi e:
BOOL ȘtergereFile (LPCTSTR TpFileName);
Are un singur parametru - un pointer la un șir ASCIIZ cu numele (calea) fișierului care trebuie șters. Înainte de a șterge fișierul, trebuie să-l închideți, deși acest lucru nu este necesar în unele versiuni de Windows.
Dacă este reușită, funcția returnează o valoare diferită de zero în registrul EAX. Dacă funcția eșuează, funcția returnează NULL în registrul EAX.