Sistemul de operare atribuie fiecărui fișier deschis un identificator unic (un filehandle) care poate fi utilizat la accesarea unui fișier pentru scrierea, citirea și recuperarea informațiilor despre un fișier. Descriptorul este valabil până când fișierul este închis. O aplicație poate moșteni descriptorii de fișiere din procesul care le-a lansat (dacă descriptorii sunt moștenitori).
Funcția CreateFile printre alte obiecte vă permite să accesați fișiere și țevi. La accesarea canalelor, CreateFile vă permite să creați o conexiune client la conductele numite care sunt în modul de așteptare în conexiune. Partea de server a canalului este creată de funcția CreateNamedPipe. O singură aplicație poate crea mai multe conexiuni de client la canal, însă numai o singură aplicație se poate conecta la o instanță a unui canal (Merită menționat faptul că pot exista mai multe instanțe ale țevilor numite cu același nume).
Funcția CreateFile are prototipul următor:
DWORDdwDesiredAccess, // modul de acces
LPSECURITY_ATTRIBUTESlpSecurityAttributes, // SD
DWORDdwCreationDisposition, // cum să creați
DWORDdwFlagsAndAttributes, // atributele fișierului
HANDLEhTemplateFile // gestionează fișierul șablon
[in] Pointer la un șir care conține numele obiectului de creat sau deschis (numele fișierului, calea fișierului, numele canalului etc.). Dacă numele este dat de o constantă literală, ar trebui să o plasați în macroTEXT () sau să o puneți în fața introducerii. De exemplu, TEXT ("C: \\ tmp.txt") sau L "C: \\ tmp.txt"
[in] Descrie modul dorit pentru accesarea fișierului. Este posibil să transferați un număr mare de steaguri diferite. Suntem interesați de drapelele GENERIC_READ, GENERIC_WRITE și uniunea acestora. Când accesați canalele, trebuie să luați în considerare modul de creare a canalelor serverului. Dacă serverul a creat un canal pentru scriere, clientul îl deschide pentru citire și invers. Dacă serverul a creat un canal pentru citire și scriere, clientul îl poate deschide atât pentru citire cât și pentru scriere.
[in] Specifică modul de separare a obiectului
0 - aplicația deschide un fișier pentru acces exclusiv. Solicitările ulterioare de deschidere a acestui fișier vor eșua până când descriptorul este închis. Pentru a partaja accesul la un fișier, se pot utiliza următoarele chei (unul sau ambele):
FILE_SHARE_READ - sunt permise numai operațiile ulterioare read-only.
FILE_SHARE_WRITE - doar operațiile de deschidere ulterioare sunt permise doar pentru scriere.
[in] Un pointer la structura SECURITY_ATTRIBUTES, care definește moștenirea unui descriptor de către procesele copilului. Puteți trece NULL, ceea ce înseamnă că mânerul nu poate fi moștenit (acest lucru este suficient pentru aplicațiile noastre).
[in] Specifică ce acțiuni trebuie luate dacă fișierul există și dacă fișierul nu există. Acest parametru trebuie să aibă una dintre următoarele valori: