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.