• файл;
• канал;
• mailslot (поштовий канал);
• комунікаційний ресурс (наприклад COM порт);
• дискові пристрої (тільки для Windows NT);
• консолі;
• директорії (відкриває їх).
Знаходиться в: Win16, Win32, Win NT
Для Delphi в модулі windows.
Об'явлення:
function CreateFile( lpFileName: PChar; // Вказівник на ім'я файлу (пристрою) dwDesiredAccess, //Параметри доступу dwShareMode: DWORD; //Доступ, який розділяється lpSecurityAttributes: PSecurityAttributes; //безпека dwCreationDisposition, // Опис dwFlagsAndAttributes: DWORD; // Атрибути файлу hTemplateFile: THandle // Файл шаблона ): THandle; stdcall;
Детальний розгляд параметрів:
• lpFileName - Вказівник на строку, яка містить ім'я створюваного файлу чи пристрою.
• dwDesiredAccess - тип доступу. Може приймати значення (можна використовувати одне чи зразу декілька):
1) 0 - запит. Функція не дасть реального доступу до файлу, а виконається як тест можливості створення чи відкриття файлу (пристрою);
2) GENERIC_READ - отримати доступ на читання;
3) GENERIC_WRITE - отримати доступ на запис.
• dwShareMode - флаги, які вказують на те, як створюваний об'єкт повинен розділяти доступ між процесами. Це значить, як буде ділится доступ до файлу з іншими програмами якщо вони теж спробують відкрити цей файл. Параметр може приймати значення (можна використовувати одне чи зразу декілька значень):
1) FILE_SHARE_DELETE - іншим процесам дозволяється доступ до файлу тільки якщо потрібен доступ на видалення (підтримується тільки в Windows NT).
2) FILE_SHARE_READ - іншим процесам дозволяється тільки читати файл.
3) FILE_SHARE_WRITE - іншим процесам дозволяється тільки писати в файл.
• lpSecurityAttributes - вказівник на структуру типу SECURITY_ATTRIBUTES. Цей параметр використовується тільки в Windows NT.
• dwCreationDistribution - описує, що робити з файлом якщо він уже існиує чи його ще немає. Параметр може приймати тільки одне з наступних значень (комбінація не допускається):
1) CREATE_NEW - створює новий файл. Якщо він вже існує, то виникне помилка;
2) CREATE_ALWAYS - завжди створює новий файл. Якщо файл існує, то він буде перезаписаний (обнулений);
3) OPEN_EXISTING - відкрити існуючий файл (пристрій). Якщо файлу немає, то виникне помилка;
4) OPEN_ALWAYS - відкриває файл в будь-якому випадку. Якщо файлу немає, то він буде створений так само як і при CREATE_NEW.
5) TRUNCATE_EXISTING - відкрити файл і обрізати його розмір до нуля. Параметр dwDesiredAccess має мати значення GENERIC_WRITE. Якщо файлу немає, то виникне помилка.
• dwFlagsAndAttributes - атрибути файлу, який створюється. Параметр може приймати комбінацію з значень:
1) FILE_ATTRIBUTE_NORMAL:
а) FILE_ATTRIBUTE_ARCHIVE - архівний
б) FILE_ATTRIBUTE_COMPRESSED - стиснутий
в) FILE_ATTRIBUTE_HIDDEN - прихований
г) FILE_ATTRIBUTE_NORMAL - нормальний
д) FILE_ATTRIBUTE_OFFLINE - дані файлу недоступні
е) FILE_ATTRIBUTE_READONLY - тільки для читання
є) FILE_ATTRIBUTE_SYSTEM - системний
ж) FILE_ATTRIBUTE_TEMPORARY - тимчасовий
2) FILE_FLAG_WRITE_THROUGH - можливість запису в файл через кеш;
3) FILE_FLAG_NO_BUFFERING - не можна використовувати буфер чи кеш;
4) FILE_FLAG_RANDOM_ACCESS - випадковий доступ. Використовується для оптимізації кешу;
5) FILE_FLAG_SEQUENTIAL_SCAN - доступ до файлу може бути послідовним від початку до кінця;
6) FILE_FLAG_DELETE_ON_CLOSE - операційна система має видалити файл, коли всі вказівник на файл будуть закриті;
7) FILE_FLAG_BACKUP_SEMANTICS - Backup файл, тобто файл резервного копіювання;
8) FILE_FLAG_POSIX_SEMANTICS - доступ виконується в POSIX стандарті;
9) SECURITY_SQOS_PRESENT:
а) SECURITY_ANONYMOUS - анонімний доступ
б) SECURITY_IDENTIFICATION - ідентифікаційний доступ
в) SECURITY_IMPERSONATION - персональний доступ
г) SECURITY_DELEGATION - колективний доступ
д) SECURITY_CONTEXT_TRACKING - динамічний режим доступу
е) SECURITY_EFFECTIVE_ONLY - обмеження груп і привілеїв
• hTemplateFile - файл шаблону.
Якщо функція виконалась без проблем, то вона повертає вказівник на відкритий (створений) пристрій. Через цей вказівник отримується доступ до файлу.
Якщо виникла помилка, то функція поверне INVALID_HANDLE_VALUE.
Немає коментарів:
Дописати коментар