Programarea delphi - manual de auto-instruire ilustrat pentru delphi 7 pentru profesioniști - utilizare

Manual de auto-instruire ilustrat pentru Delphi 7 pentru profesioniști

Utilizarea fișierelor afișate

Acesta din urmă este cel mai neconvențional tip de lucru cu fișiere - acestea sunt așa-numitele fișiere de afișare.







În general vorbind, în "memorie" pe 32 de biți Windows înseamnă nu numai RAM (RAM), ci și memoria rezervată de sistemul de operare de pe hard disk. Acest tip de memorie se numește memorie virtuală. Codul și datele sunt cartografiate pe hard disk prin intermediul sistemului de paginare. Sistemul de pagină utilizează un fișier de pagină (win386.swp în Windows 95/98 și pagefile.sys în Windows NT) pentru a afișa fișierul de pagină. Fragmentul necesar al memoriei virtuale este transferat din fișierul de pagină în RAM și, astfel, devine disponibil.

Una sau mai multe aplicații pot deschide fișierul afișat și astfel pot avea acces la datele acestui obiect. Astfel, datele plasate într-un fișier de pagină de către o aplicație utilizând fișierul afișat pot fi accesate de alte aplicații dacă deschid și utilizează același fișier de afișare.

Crearea și utilizarea obiectelor de afișare a fișierelor se face prin intermediul funcțiilor API-ului Windows. Există trei funcții:

Funcția CreateFiieMapping (hFile: THandle; IpFileMappingAttributes: PSecurityAttributes; flProtect, dwMaximumSizeHigh, dwMaximumSizeLow:

DWORD; IpName: PChar): Thandle;

Primul parametru este de tipul THandle. Trebuie să se potrivească cu descriptorul fișierului deja deschis utilizând funcția createFile. Dacă valoarea parametrului hFile este SFFFFFFFF. atunci rezultă legarea obiectului de afișare a fișierului la fișierul de pagină al sistemului de operare.

Al doilea parametru este un pointer la o intrare TSecurityAttributes. În absența cerințelor de protecție a datelor în Windows NT, valoarea acestui parametru este întotdeauna zero. Al treilea parametru este de tip DWORD. Definește atributul de securitate. Dacă intenționați să partajați date utilizând fișierul afișat, al treilea parametru trebuie să fie setat la PAGE_READWRITE.







Al patrulea și al cincilea parametru sunt de asemenea de tipul DWORD. Când se execută funcția CreateFiieMapping. valoarea tipului DWORD al celui de-al patrulea parametru este mutată la stânga cu patru octeți și apoi combinată cu valoarea celui de-al cincilea parametru de către și operația. Pur și simplu, valorile sunt combinate într-un număr pe 64 de biți, egal cu cantitatea de memorie alocată obiectului de afișare a fișierelor din pagina de fișiere a sistemului de operare. Deoarece este puțin probabil să încercați să alocați mai mult de 4 GB de date, valoarea celui de-al patrulea parametru trebuie să fie întotdeauna zero. Al cincilea parametru utilizat trebuie să indice cât de multă memorie în octeți ar trebui să fie rezervată ca o memorie partajată. Dacă doriți să afișați întregul fișier, al patrulea și al cincilea parametru trebuie să fie zero.

Al șaselea parametru este de tip PChar și este numele obiectului de afișare a fișierelor.

Funcția CreateFileMapping returnează o valoare de tip THandle. Dacă este reușită, valoarea returnată de funcție este descriptorul obiectului de afișare a fișierului creat. Dacă apare o eroare, valoarea returnată va fi 0.

funcția MapViewOfFile (hFileMappingObject: Thandle; dwDesiredAccess:

DWORD; dwFileOffsetHigh, dwFileOffsetLow, dwNumberOfBytesToMap: DWORD):

Primul parametru este de tipul THandle. Valoarea sa trebuie să fie un descriptor al obiectului de afișare a fișierului creat - unul care se întoarce la funcția createFileMapping. Al doilea parametru specifică modul de fișier: FILE_MAP_WRITE, FILE_MAP_READ sau FILE_MAP_ALL_ACCESS.

Al treilea și al patrulea parametru sunt de asemenea de tip DWORD. Aceasta este compensarea zonei afișate în raport cu începutul fișierului în octeți. În cazul nostru, acești parametri trebuie să fie setați la zero, deoarece valoarea pe care o acordăm celui de-al cincilea (ultimul) parametru al funcției MapViewOfFile. este, de asemenea, zero.

Al cincilea (și ultimul) parametru al funcției MapViewOfFile. precum și parametrii anteriori, este de tip DWORD. Se utilizează pentru a determina (în octeți) cantitatea de date a obiectului de afișare a fișierului să fie afișată în proces (faceți-o la dispoziție). Pentru a atinge obiectivele noastre, această valoare trebuie setată la zero, ceea ce înseamnă că toate datele alocate înainte de afișarea acestei funcții sunt afișate automat

Valoarea returnată de funcția MapViewOfFile. are tipul de "pointer".

Următorul fragment de cod demonstrează apelarea funcției MapViewOfFile.

hMappedFile: Thandle; pSharedBuf: PChar;

CreareFișiereMaptare (FHandle, zero, PAGE_READWRITE, 0, 0, 'SharedBlock');







Articole similare

Trimiteți-le prietenilor: