Робота з файлами в windows створення файлів

Операційна система привласнює кожному відкритого файлу унікальний ідентифікатор (дескриптор, filehandle), який може бути використаний при зверненнях до файлу для запису, читання і отримання інформації про фото. Дескриптор дійсний до тих пір, поки файл не закрите. Додаток може успадковувати дескриптори файлів від процесу, який його запустив (якщо дескриптори успадковані).

Функція CreateFileсреді інших об'єктів дозволяє звертатися до файлів і каналах (pipes). При зверненні до каналів функціяCreateFileпозволяет створювати клієнтське підключення до іменованих каналів, які знаходяться в режимі очікування підключення. Серверна частина каналу створюється функцією CreateNamedPipe. Один додаток може створювати безліч клієнтських підключень до каналу, але до одного екземпляра каналу може підключатися тільки один додаток (Варто зазначити, що можливе існування декількох екземплярів іменованих каналів з однаковими іменами).

Функція CreateFileімеет наступний прототип:

DWORDdwDesiredAccess, // access mode

LPSECURITY_ATTRIBUTESlpSecurityAttributes, // SD

DWORDdwCreationDisposition, // how to create

DWORDdwFlagsAndAttributes, // file attributes

HANDLEhTemplateFile // handle to template file

[In] Покажчик на рядок, що містить ім'я об'єкта для створення або відкриття (ім'я файлу, шлях до файлу, ім'я каналу та ін.). Якщо ім'я задається літеральної константою, то слід помістити її в макросTEXT () або поставітьLперед відкриває лапками. Наприклад, TEXT ( "C: \\ tmp.txt") або L "C: \\ tmp.txt"

[In] Опис бажаного режиму доступу до файлу. Існує можливість передачі великої кількості різних прапорів. Нас цікавлять прапори GENERIC_READ, GENERIC_WRITE і їх об'єднання. При доступі до каналів слід враховувати режим створення каналу сервером. Якщо сервер створив канал для запису, то клієнт відкриває його для читання і навпаки. Якщо сервер створив канал для читання і запису, то клієнт може відкрити його як для читання, так і для запису.

[In] Визначає режим поділу об'єкта

0 - додаток відкриває файл для монопольного доступу. Наступні звернення на відкриття даного файлу будуть безуспішними, поки даних дескриптор не буде закритий. Для поділу доступу до файлу можуть використовуватися такі ключі (один або разом):

FILE_SHARE_READ - дозволені лише наступні операції відкриття тільки на читання.

FILE_SHARE_WRITE - дозволені лише наступні операції відкриття тільки на запис.

[In] Покажчик на Сруктура SECURITY_ATTRIBUTES, яка визначає можливість успадкування дескриптора дочірніми процесами. Можна передаватьNULL- це означає, що дескриптор не може бути успадкований (для наших додатків цього достатньо).

[In] Визначає те, які дії необхідно зробити у випадках, якщо файл існує і якщо файл не існує. Цей параметр повинен мати одне з наступних заначеніямі:

Схожі статті